home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1991-08-30 | 13.1 KB | [TEXT/PEDT] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
10%
| dexvert
| Jesper Olsen Module (music/jesperOlsen)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Thu Aug 29 22:59:03 1991, modified Thu Aug 29 22:59:03 1991, creator 'PEDT', type ASCII, 12754 bytes "glob.c" , at 0x3252 424 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
49%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
33%
| TrID
| TTComp archive compressed (bin-4K)
| default (weak)
| |
16%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [PEDT] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 06 67 6c 6f 62 2e 63 | 00 00 00 00 00 00 00 00 |..glob.c|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 50 45 44 | 54 01 00 00 00 00 00 00 |.TEXTPED|T.......|
|00000050| 00 00 00 00 00 31 d2 00 | 00 01 a8 a4 e3 64 f7 a4 |.....1..|.....d..|
|00000060| e3 64 f7 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.d......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 8b 03 00 00 |........|........|
|00000080| 2f 2a 20 44 65 66 69 6e | 65 20 47 54 45 53 54 20 |/* Defin|e GTEST |
|00000090| 74 6f 20 63 61 75 73 65 | 20 61 20 74 65 73 74 20 |to cause| a test |
|000000a0| 6d 61 69 6e 20 70 72 6f | 67 72 61 6d 20 61 74 20 |main pro|gram at |
|000000b0| 74 68 65 20 65 6e 64 20 | 6f 66 20 74 68 69 73 0d |the end |of this.|
|000000c0| 20 20 20 66 69 6c 65 20 | 74 6f 20 62 65 20 63 6f | file |to be co|
|000000d0| 6d 70 69 6c 65 64 2e 20 | 20 52 65 6d 6f 76 65 20 |mpiled. | Remove |
|000000e0| 69 74 20 74 6f 20 63 61 | 6c 6c 20 67 6c 6f 62 5f |it to ca|ll glob_|
|000000f0| 66 69 6c 65 6e 61 6d 65 | 20 66 72 6f 6d 20 61 0d |filename| from a.|
|00000100| 20 20 20 70 72 6f 67 72 | 61 6d 20 77 69 74 68 20 | progr|am with |
|00000110| 73 6f 6d 65 20 6f 74 68 | 65 72 20 6d 61 69 6e 2e |some oth|er main.|
|00000120| 0d 2a 2f 0d 0d 2f 2a 20 | 4e 6f 74 65 3a 20 20 54 |.*/../* |Note: T|
|00000130| 68 69 73 20 63 6f 64 65 | 20 68 61 73 20 62 65 65 |his code| has bee|
|00000140| 6e 20 6d 6f 64 66 69 65 | 64 20 74 6f 20 72 75 6e |n modfie|d to run|
|00000150| 20 6f 6e 20 74 68 65 0d | 20 20 20 4d 61 63 69 6e | on the.| Macin|
|00000160| 74 6f 73 68 20 75 6e 64 | 65 72 20 54 48 49 4e 4b |tosh und|er THINK|
|00000170| 20 43 20 35 2e 30 2e 20 | 20 49 74 20 69 73 20 4e | C 5.0. | It is N|
|00000180| 4f 54 20 74 68 65 20 73 | 6f 75 72 63 65 20 61 73 |OT the s|ource as|
|00000190| 20 64 69 73 74 72 69 62 | 75 74 65 64 0d 20 20 20 | distrib|uted. |
|000001a0| 62 79 20 74 68 65 20 46 | 72 65 65 20 53 6f 66 74 |by the F|ree Soft|
|000001b0| 77 61 72 65 20 46 6f 75 | 6e 64 61 74 69 6f 6e 20 |ware Fou|ndation |
|000001c0| 61 73 20 70 61 72 74 20 | 6f 66 20 62 61 73 68 2e |as part |of bash.|
|000001d0| 20 20 4e 6f 74 20 65 76 | 65 6e 20 63 6c 6f 73 65 | Not ev|en close|
|000001e0| 2e 0d 2a 2f 0d 0d 2f 2a | 20 46 69 6c 65 2d 6e 61 |..*/../*| File-na|
|000001f0| 6d 65 20 77 69 6c 64 63 | 61 72 64 20 70 61 74 74 |me wildc|ard patt|
|00000200| 65 72 6e 20 6d 61 74 63 | 68 69 6e 67 20 66 6f 72 |ern matc|hing for|
|00000210| 20 47 4e 55 2e 0d 20 20 | 20 43 6f 70 79 72 69 67 | GNU.. | Copyrig|
|00000220| 68 74 20 28 43 29 20 31 | 39 38 35 2c 20 31 39 38 |ht (C) 1|985, 198|
|00000230| 38 2c 20 31 39 38 39 20 | 46 72 65 65 20 53 6f 66 |8, 1989 |Free Sof|
|00000240| 74 77 61 72 65 20 46 6f | 75 6e 64 61 74 69 6f 6e |tware Fo|undation|
|00000250| 2c 20 49 6e 63 2e 0d 0d | 20 20 20 54 68 69 73 20 |, Inc...| This |
|00000260| 70 72 6f 67 72 61 6d 20 | 69 73 20 66 72 65 65 20 |program |is free |
|00000270| 73 6f 66 74 77 61 72 65 | 3b 20 79 6f 75 20 63 61 |software|; you ca|
|00000280| 6e 20 72 65 64 69 73 74 | 72 69 62 75 74 65 20 69 |n redist|ribute i|
|00000290| 74 20 61 6e 64 2f 6f 72 | 20 6d 6f 64 69 66 79 0d |t and/or| modify.|
|000002a0| 20 20 20 69 74 20 75 6e | 64 65 72 20 74 68 65 20 | it un|der the |
|000002b0| 74 65 72 6d 73 20 6f 66 | 20 74 68 65 20 47 4e 55 |terms of| the GNU|
|000002c0| 20 47 65 6e 65 72 61 6c | 20 50 75 62 6c 69 63 20 | General| Public |
|000002d0| 4c 69 63 65 6e 73 65 20 | 61 73 20 70 75 62 6c 69 |License |as publi|
|000002e0| 73 68 65 64 20 62 79 0d | 20 20 20 74 68 65 20 46 |shed by.| the F|
|000002f0| 72 65 65 20 53 6f 66 74 | 77 61 72 65 20 46 6f 75 |ree Soft|ware Fou|
|00000300| 6e 64 61 74 69 6f 6e 3b | 20 65 69 74 68 65 72 20 |ndation;| either |
|00000310| 76 65 72 73 69 6f 6e 20 | 31 2c 20 6f 72 20 28 61 |version |1, or (a|
|00000320| 74 20 79 6f 75 72 20 6f | 70 74 69 6f 6e 29 0d 20 |t your o|ption). |
|00000330| 20 20 61 6e 79 20 6c 61 | 74 65 72 20 76 65 72 73 | any la|ter vers|
|00000340| 69 6f 6e 2e 0d 0d 20 20 | 20 54 68 69 73 20 70 72 |ion... | This pr|
|00000350| 6f 67 72 61 6d 20 69 73 | 20 64 69 73 74 72 69 62 |ogram is| distrib|
|00000360| 75 74 65 64 20 69 6e 20 | 74 68 65 20 68 6f 70 65 |uted in |the hope|
|00000370| 20 74 68 61 74 20 69 74 | 20 77 69 6c 6c 20 62 65 | that it| will be|
|00000380| 20 75 73 65 66 75 6c 2c | 0d 20 20 20 62 75 74 20 | useful,|. but |
|00000390| 57 49 54 48 4f 55 54 20 | 41 4e 59 20 57 41 52 52 |WITHOUT |ANY WARR|
|000003a0| 41 4e 54 59 3b 20 77 69 | 74 68 6f 75 74 20 65 76 |ANTY; wi|thout ev|
|000003b0| 65 6e 20 74 68 65 20 69 | 6d 70 6c 69 65 64 20 77 |en the i|mplied w|
|000003c0| 61 72 72 61 6e 74 79 20 | 6f 66 0d 20 20 20 4d 45 |arranty |of. ME|
|000003d0| 52 43 48 41 4e 54 41 42 | 49 4c 49 54 59 20 6f 72 |RCHANTAB|ILITY or|
|000003e0| 20 46 49 54 4e 45 53 53 | 20 46 4f 52 20 41 20 50 | FITNESS| FOR A P|
|000003f0| 41 52 54 49 43 55 4c 41 | 52 20 50 55 52 50 4f 53 |ARTICULA|R PURPOS|
|00000400| 45 2e 20 20 53 65 65 20 | 74 68 65 0d 20 20 20 47 |E. See |the. G|
|00000410| 4e 55 20 47 65 6e 65 72 | 61 6c 20 50 75 62 6c 69 |NU Gener|al Publi|
|00000420| 63 20 4c 69 63 65 6e 73 | 65 20 66 6f 72 20 6d 6f |c Licens|e for mo|
|00000430| 72 65 20 64 65 74 61 69 | 6c 73 2e 0d 0d 20 20 20 |re detai|ls... |
|00000440| 59 6f 75 20 73 68 6f 75 | 6c 64 20 68 61 76 65 20 |You shou|ld have |
|00000450| 72 65 63 65 69 76 65 64 | 20 61 20 63 6f 70 79 20 |received| a copy |
|00000460| 6f 66 20 74 68 65 20 47 | 4e 55 20 47 65 6e 65 72 |of the G|NU Gener|
|00000470| 61 6c 20 50 75 62 6c 69 | 63 20 4c 69 63 65 6e 73 |al Publi|c Licens|
|00000480| 65 0d 20 20 20 61 6c 6f | 6e 67 20 77 69 74 68 20 |e. alo|ng with |
|00000490| 74 68 69 73 20 70 72 6f | 67 72 61 6d 3b 20 69 66 |this pro|gram; if|
|000004a0| 20 6e 6f 74 2c 20 77 72 | 69 74 65 20 74 6f 20 74 | not, wr|ite to t|
|000004b0| 68 65 20 46 72 65 65 20 | 53 6f 66 74 77 61 72 65 |he Free |Software|
|000004c0| 0d 20 20 20 46 6f 75 6e | 64 61 74 69 6f 6e 2c 20 |. Foun|dation, |
|000004d0| 49 6e 63 2e 2c 20 36 37 | 35 20 4d 61 73 73 20 41 |Inc., 67|5 Mass A|
|000004e0| 76 65 2c 20 43 61 6d 62 | 72 69 64 67 65 2c 20 4d |ve, Camb|ridge, M|
|000004f0| 41 20 30 32 31 33 39 2c | 20 55 53 41 2e 20 20 2a |A 02139,| USA. *|
|00000500| 2f 0d 0d 2f 2a 20 54 6f | 20 77 68 6f 6d 65 76 65 |/../* To| whomeve|
|00000510| 72 20 69 74 20 6d 61 79 | 20 63 6f 6e 63 65 72 6e |r it may| concern|
|00000520| 3a 20 49 20 68 61 76 65 | 20 6e 65 76 65 72 20 73 |: I have| never s|
|00000530| 65 65 6e 20 74 68 65 20 | 63 6f 64 65 20 77 68 69 |een the |code whi|
|00000540| 63 68 20 6d 6f 73 74 0d | 20 20 20 55 6e 69 78 20 |ch most.| Unix |
|00000550| 70 72 6f 67 72 61 6d 73 | 20 75 73 65 20 74 6f 20 |programs| use to |
|00000560| 70 65 72 66 6f 72 6d 20 | 74 68 69 73 20 66 75 6e |perform |this fun|
|00000570| 63 74 69 6f 6e 2e 20 20 | 49 20 77 72 6f 74 65 20 |ction. |I wrote |
|00000580| 74 68 69 73 20 66 72 6f | 6d 20 73 63 72 61 74 63 |this fro|m scratc|
|00000590| 68 0d 20 20 20 62 61 73 | 65 64 20 6f 6e 20 73 70 |h. bas|ed on sp|
|000005a0| 65 63 69 66 69 63 61 74 | 69 6f 6e 73 20 66 6f 72 |ecificat|ions for|
|000005b0| 20 74 68 65 20 70 61 74 | 74 65 72 6e 20 6d 61 74 | the pat|tern mat|
|000005c0| 63 68 69 6e 67 2e 20 20 | 2d 2d 52 4d 53 2e 20 20 |ching. |--RMS. |
|000005d0| 2a 2f 0d 0d 0d 23 64 65 | 66 69 6e 65 20 44 5f 4e |*/...#de|fine D_N|
|000005e0| 41 4d 4c 45 4e 28 64 29 | 20 28 28 64 29 2d 3e 64 |AMLEN(d)| ((d)->d|
|000005f0| 5f 6e 61 6d 6c 65 6e 29 | 0d 0d 23 69 6e 63 6c 75 |_namlen)|..#inclu|
|00000600| 64 65 20 3c 73 74 64 69 | 6f 2e 68 3e 0d 23 69 6e |de <stdi|o.h>.#in|
|00000610| 63 6c 75 64 65 20 3c 73 | 74 72 69 6e 67 2e 68 3e |clude <s|tring.h>|
|00000620| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 6c 69 |.#includ|e <stdli|
|00000630| 62 2e 68 3e 0d 23 69 6e | 63 6c 75 64 65 20 22 63 |b.h>.#in|clude "c|
|00000640| 6f 6d 6d 6f 6e 2e 68 22 | 0d 23 69 6e 63 6c 75 64 |ommon.h"|.#includ|
|00000650| 65 20 22 64 69 72 65 6e | 74 2e 68 22 0d 0d 23 64 |e "diren|t.h"..#d|
|00000660| 65 66 69 6e 65 20 62 63 | 6f 70 79 28 73 2c 74 2c |efine bc|opy(s,t,|
|00000670| 6e 29 20 6d 65 6d 6d 6f | 76 65 28 74 2c 73 2c 6e |n) memmo|ve(t,s,n|
|00000680| 29 0d 23 64 65 66 69 6e | 65 20 62 63 6d 70 28 62 |).#defin|e bcmp(b|
|00000690| 31 2c 62 32 2c 6e 29 20 | 6d 65 6d 63 6d 70 28 62 |1,b2,n) |memcmp(b|
|000006a0| 31 2c 62 32 2c 6e 29 0d | 23 64 65 66 69 6e 65 20 |1,b2,n).|#define |
|000006b0| 62 7a 65 72 6f 28 62 2c | 6e 29 20 6d 65 6d 73 65 |bzero(b,|n) memse|
|000006c0| 74 28 62 2c 30 2c 6e 29 | 0d 65 78 74 65 72 6e 20 |t(b,0,n)|.extern |
|000006d0| 76 6f 69 64 20 2a 61 6c | 6c 6f 63 61 28 29 3b 0d |void *al|loca();.|
|000006e0| 0d 23 69 66 6e 64 65 66 | 20 4e 55 4c 4c 0d 23 64 |.#ifndef| NULL.#d|
|000006f0| 65 66 69 6e 65 20 4e 55 | 4c 4c 20 30 0d 23 65 6e |efine NU|LL 0.#en|
|00000700| 64 69 66 0d 0d 2f 2a 20 | 47 6c 6f 62 61 6c 20 76 |dif../* |Global v|
|00000710| 61 72 69 61 62 6c 65 20 | 77 68 69 63 68 20 63 6f |ariable |which co|
|00000720| 6e 74 72 6f 6c 73 20 77 | 68 65 74 68 65 72 20 6f |ntrols w|hether o|
|00000730| 72 20 6e 6f 74 20 2a 20 | 6d 61 74 63 68 65 73 20 |r not * |matches |
|00000740| 2e 2a 2e 0d 20 20 20 4e | 6f 6e 2d 7a 65 72 6f 20 |.*.. N|on-zero |
|00000750| 6d 65 61 6e 73 20 64 6f | 6e 27 74 20 6d 61 74 63 |means do|n't matc|
|00000760| 68 20 2e 2a 2e 20 20 2a | 2f 0d 69 6e 74 20 6e 6f |h .*. *|/.int no|
|00000770| 67 6c 6f 62 5f 64 6f 74 | 5f 66 69 6c 65 6e 61 6d |glob_dot|_filenam|
|00000780| 65 73 20 3d 20 31 3b 0d | 0d 2f 2a 20 52 65 74 75 |es = 1;.|./* Retu|
|00000790| 72 6e 20 6e 6f 6e 7a 65 | 72 6f 20 69 66 20 50 41 |rn nonze|ro if PA|
|000007a0| 54 54 45 52 4e 20 68 61 | 73 20 61 6e 79 20 73 70 |TTERN ha|s any sp|
|000007b0| 65 63 69 61 6c 20 67 6c | 6f 62 62 69 6e 67 20 63 |ecial gl|obbing c|
|000007c0| 68 61 72 73 20 69 6e 20 | 69 74 2e 20 20 2a 2f 0d |hars in |it. */.|
|000007d0| 73 74 61 74 69 63 20 69 | 6e 74 0d 67 6c 6f 62 5f |static i|nt.glob_|
|000007e0| 70 61 74 74 65 72 6e 5f | 70 20 28 70 61 74 74 65 |pattern_|p (patte|
|000007f0| 72 6e 29 0d 20 20 20 20 | 20 63 68 61 72 20 2a 70 |rn). | char *p|
|00000800| 61 74 74 65 72 6e 3b 0d | 7b 0d 20 20 72 65 67 69 |attern;.|{. regi|
|00000810| 73 74 65 72 20 63 68 61 | 72 20 2a 70 20 3d 20 70 |ster cha|r *p = p|
|00000820| 61 74 74 65 72 6e 3b 0d | 20 20 72 65 67 69 73 74 |attern;.| regist|
|00000830| 65 72 20 63 68 61 72 20 | 63 3b 0d 20 20 69 6e 74 |er char |c;. int|
|00000840| 20 20 20 6f 70 65 6e 20 | 3d 20 30 3b 0d 0d 20 20 | open |= 0;.. |
|00000850| 77 68 69 6c 65 20 28 28 | 63 20 3d 20 2a 70 2b 2b |while ((|c = *p++|
|00000860| 29 20 21 3d 20 27 5c 30 | 27 29 0d 20 20 20 20 73 |) != '\0|'). s|
|00000870| 77 69 74 63 68 20 28 63 | 29 0d 20 20 20 20 20 20 |witch (c|). |
|00000880| 7b 0d 20 20 20 20 20 20 | 63 61 73 65 20 27 3f 27 |{. |case '?'|
|00000890| 3a 0d 20 20 20 20 20 20 | 63 61 73 65 20 27 2a 27 |:. |case '*'|
|000008a0| 3a 0d 20 20 20 20 20 20 | 20 20 72 65 74 75 72 6e |:. | return|
|000008b0| 20 31 3b 0d 0d 20 20 20 | 20 20 20 63 61 73 65 20 | 1;.. | case |
|000008c0| 27 5b 27 3a 20 20 20 20 | 20 20 20 20 20 2f 2a 20 |'[': | /* |
|000008d0| 4f 6e 6c 79 20 61 63 63 | 65 70 74 20 61 6e 20 6f |Only acc|ept an o|
|000008e0| 70 65 6e 20 62 72 61 63 | 65 20 69 66 20 74 68 65 |pen brac|e if the|
|000008f0| 72 65 20 69 73 20 61 20 | 63 6c 6f 73 65 20 2a 2f |re is a |close */|
|00000900| 0d 20 20 20 20 20 20 20 | 20 6f 70 65 6e 2b 2b 3b |. | open++;|
|00000910| 20 20 20 20 20 20 20 20 | 20 2f 2a 20 62 72 61 63 | | /* brac|
|00000920| 65 20 74 6f 20 6d 61 74 | 63 68 20 69 74 2e 20 20 |e to mat|ch it. |
|00000930| 42 72 61 63 6b 65 74 20 | 65 78 70 72 65 73 73 69 |Bracket |expressi|
|00000940| 6f 6e 73 20 6d 75 73 74 | 20 62 65 20 2a 2f 0d 20 |ons must| be */. |
|00000950| 20 20 20 20 20 20 20 63 | 6f 6e 74 69 6e 75 65 3b | c|ontinue;|
|00000960| 20 20 20 20 20 20 20 2f | 2a 20 63 6f 6d 70 6c 65 | /|* comple|
|00000970| 74 65 2c 20 61 63 63 6f | 72 64 69 6e 67 20 74 6f |te, acco|rding to|
|00000980| 20 50 6f 73 69 78 2e 32 | 20 2a 2f 0d 20 20 20 20 | Posix.2| */. |
|00000990| 20 20 63 61 73 65 20 27 | 5d 27 3a 0d 20 20 20 20 | case '|]':. |
|000009a0| 20 20 20 20 69 66 20 28 | 6f 70 65 6e 29 0d 20 20 | if (|open). |
|000009b0| 20 20 20 20 20 20 20 20 | 72 65 74 75 72 6e 20 31 | |return 1|
|000009c0| 3b 0d 20 20 20 20 20 20 | 20 20 63 6f 6e 74 69 6e |;. | contin|
|000009d0| 75 65 3b 0d 0d 20 20 20 | 20 20 20 63 61 73 65 20 |ue;.. | case |
|000009e0| 27 5c 5c 27 3a 0d 20 20 | 20 20 20 20 20 20 69 66 |'\\':. | if|
|000009f0| 20 28 2a 70 2b 2b 20 3d | 3d 20 27 5c 30 27 29 0d | (*p++ =|= '\0').|
|00000a00| 20 20 20 20 20 20 20 20 | 20 20 72 65 74 75 72 6e | | return|
|00000a10| 20 30 3b 0d 20 20 20 20 | 20 20 7d 0d 0d 20 20 72 | 0;. | }.. r|
|00000a20| 65 74 75 72 6e 20 30 3b | 0d 7d 0d 0d 73 74 61 74 |eturn 0;|.}..stat|
|00000a30| 69 63 20 69 6e 74 20 67 | 6c 6f 62 5f 6d 61 74 63 |ic int g|lob_matc|
|00000a40| 68 5f 61 66 74 65 72 5f | 73 74 61 72 20 28 29 3b |h_after_|star ();|
|00000a50| 0d 0d 2f 2a 20 4d 61 74 | 63 68 20 74 68 65 20 70 |../* Mat|ch the p|
|00000a60| 61 74 74 65 72 6e 20 50 | 41 54 54 45 52 4e 20 61 |attern P|ATTERN a|
|00000a70| 67 61 69 6e 73 74 20 74 | 68 65 20 73 74 72 69 6e |gainst t|he strin|
|00000a80| 67 20 54 45 58 54 3b 0d | 20 20 20 72 65 74 75 72 |g TEXT;.| retur|
|00000a90| 6e 20 31 20 69 66 20 69 | 74 20 6d 61 74 63 68 65 |n 1 if i|t matche|
|00000aa0| 73 2c 20 30 20 6f 74 68 | 65 72 77 69 73 65 2e 0d |s, 0 oth|erwise..|
|00000ab0| 0d 20 20 20 41 20 6d 61 | 74 63 68 20 6d 65 61 6e |. A ma|tch mean|
|00000ac0| 73 20 74 68 65 20 65 6e | 74 69 72 65 20 73 74 72 |s the en|tire str|
|00000ad0| 69 6e 67 20 54 45 58 54 | 20 69 73 20 75 73 65 64 |ing TEXT| is used|
|00000ae0| 20 75 70 20 69 6e 20 6d | 61 74 63 68 69 6e 67 2e | up in m|atching.|
|00000af0| 0d 0d 20 20 20 49 6e 20 | 74 68 65 20 70 61 74 74 |.. In |the patt|
|00000b00| 65 72 6e 20 73 74 72 69 | 6e 67 2c 20 60 2a 27 20 |ern stri|ng, `*' |
|00000b10| 6d 61 74 63 68 65 73 20 | 61 6e 79 20 73 65 71 75 |matches |any sequ|
|00000b20| 65 6e 63 65 20 6f 66 20 | 63 68 61 72 61 63 74 65 |ence of |characte|
|00000b30| 72 73 2c 0d 20 20 20 60 | 3f 27 20 6d 61 74 63 68 |rs,. `|?' match|
|00000b40| 65 73 20 61 6e 79 20 63 | 68 61 72 61 63 74 65 72 |es any c|haracter|
|00000b50| 2c 20 5b 53 45 54 5d 20 | 6d 61 74 63 68 65 73 20 |, [SET] |matches |
|00000b60| 61 6e 79 20 63 68 61 72 | 61 63 74 65 72 20 69 6e |any char|acter in|
|00000b70| 20 74 68 65 20 73 70 65 | 63 69 66 69 65 64 20 73 | the spe|cified s|
|00000b80| 65 74 2c 0d 20 20 20 5b | 21 53 45 54 5d 20 6d 61 |et,. [|!SET] ma|
|00000b90| 74 63 68 65 73 20 61 6e | 79 20 63 68 61 72 61 63 |tches an|y charac|
|00000ba0| 74 65 72 20 6e 6f 74 20 | 69 6e 20 74 68 65 20 73 |ter not |in the s|
|00000bb0| 70 65 63 69 66 69 65 64 | 20 73 65 74 2e 0d 0d 20 |pecified| set... |
|00000bc0| 20 20 41 20 73 65 74 20 | 69 73 20 63 6f 6d 70 6f | A set |is compo|
|00000bd0| 73 65 64 20 6f 66 20 63 | 68 61 72 61 63 74 65 72 |sed of c|haracter|
|00000be0| 73 20 6f 72 20 72 61 6e | 67 65 73 3b 20 61 20 72 |s or ran|ges; a r|
|00000bf0| 61 6e 67 65 20 6c 6f 6f | 6b 73 20 6c 69 6b 65 0d |ange loo|ks like.|
|00000c00| 20 20 20 63 68 61 72 61 | 63 74 65 72 20 68 79 70 | chara|cter hyp|
|00000c10| 68 65 6e 20 63 68 61 72 | 61 63 74 65 72 20 28 61 |hen char|acter (a|
|00000c20| 73 20 69 6e 20 30 2d 39 | 20 6f 72 20 41 2d 5a 29 |s in 0-9| or A-Z)|
|00000c30| 2e 0d 20 20 20 5b 30 2d | 39 61 2d 7a 41 2d 5a 5f |.. [0-|9a-zA-Z_|
|00000c40| 5d 20 69 73 20 74 68 65 | 20 73 65 74 20 6f 66 20 |] is the| set of |
|00000c50| 63 68 61 72 61 63 74 65 | 72 73 20 61 6c 6c 6f 77 |characte|rs allow|
|00000c60| 65 64 20 69 6e 20 43 20 | 69 64 65 6e 74 69 66 69 |ed in C |identifi|
|00000c70| 65 72 73 2e 0d 20 20 20 | 41 6e 79 20 6f 74 68 65 |ers.. |Any othe|
|00000c80| 72 20 63 68 61 72 61 63 | 74 65 72 20 69 6e 20 74 |r charac|ter in t|
|00000c90| 68 65 20 70 61 74 74 65 | 72 6e 20 6d 75 73 74 20 |he patte|rn must |
|00000ca0| 62 65 20 6d 61 74 63 68 | 65 64 20 65 78 61 63 74 |be match|ed exact|
|00000cb0| 6c 79 2e 0d 0d 20 20 20 | 54 6f 20 73 75 70 70 72 |ly... |To suppr|
|00000cc0| 65 73 73 20 74 68 65 20 | 73 70 65 63 69 61 6c 20 |ess the |special |
|00000cd0| 73 79 6e 74 61 63 74 69 | 63 20 73 69 67 6e 69 66 |syntacti|c signif|
|00000ce0| 69 63 61 6e 63 65 20 6f | 66 20 61 6e 79 20 6f 66 |icance o|f any of|
|00000cf0| 20 60 5b 5d 2a 3f 21 2d | 5c 27 2c 0d 20 20 20 61 | `[]*?!-|\',. a|
|00000d00| 6e 64 20 6d 61 74 63 68 | 20 74 68 65 20 63 68 61 |nd match| the cha|
|00000d10| 72 61 63 74 65 72 20 65 | 78 61 63 74 6c 79 2c 20 |racter e|xactly, |
|00000d20| 70 72 65 63 65 64 65 20 | 69 74 20 77 69 74 68 20 |precede |it with |
|00000d30| 61 20 60 5c 27 2e 0d 0d | 20 20 20 49 66 20 44 4f |a `\'...| If DO|
|00000d40| 54 5f 53 50 45 43 49 41 | 4c 20 69 73 20 6e 6f 6e |T_SPECIA|L is non|
|00000d50| 7a 65 72 6f 2c 0d 20 20 | 20 60 2a 27 20 61 6e 64 |zero,. | `*' and|
|00000d60| 20 60 3f 27 20 64 6f 20 | 6e 6f 74 20 6d 61 74 63 | `?' do |not matc|
|00000d70| 68 20 60 2e 27 20 61 74 | 20 74 68 65 20 62 65 67 |h `.' at| the beg|
|00000d80| 69 6e 6e 69 6e 67 20 6f | 66 20 54 45 58 54 2e 20 |inning o|f TEXT. |
|00000d90| 20 2a 2f 0d 0d 73 74 61 | 74 69 63 20 69 6e 74 0d | */..sta|tic int.|
|00000da0| 67 6c 6f 62 5f 6d 61 74 | 63 68 20 28 70 61 74 74 |glob_mat|ch (patt|
|00000db0| 65 72 6e 2c 20 74 65 78 | 74 2c 20 64 6f 74 5f 73 |ern, tex|t, dot_s|
|00000dc0| 70 65 63 69 61 6c 29 0d | 20 20 20 20 20 63 68 61 |pecial).| cha|
|00000dd0| 72 20 2a 70 61 74 74 65 | 72 6e 2c 20 2a 74 65 78 |r *patte|rn, *tex|
|00000de0| 74 3b 0d 20 20 20 20 20 | 69 6e 74 20 64 6f 74 5f |t;. |int dot_|
|00000df0| 73 70 65 63 69 61 6c 3b | 0d 7b 0d 20 20 72 65 67 |special;|.{. reg|
|00000e00| 69 73 74 65 72 20 63 68 | 61 72 20 2a 70 20 3d 20 |ister ch|ar *p = |
|00000e10| 70 61 74 74 65 72 6e 2c | 20 2a 74 20 3d 20 74 65 |pattern,| *t = te|
|00000e20| 78 74 3b 0d 20 20 72 65 | 67 69 73 74 65 72 20 63 |xt;. re|gister c|
|00000e30| 68 61 72 20 63 3b 0d 0d | 20 20 77 68 69 6c 65 20 |har c;..| while |
|00000e40| 28 28 63 20 3d 20 2a 70 | 2b 2b 29 20 21 3d 20 27 |((c = *p|++) != '|
|00000e50| 5c 30 27 29 0d 20 20 20 | 20 73 77 69 74 63 68 20 |\0'). | switch |
|00000e60| 28 63 29 0d 20 20 20 20 | 20 20 7b 0d 20 20 20 20 |(c). | {. |
|00000e70| 20 20 63 61 73 65 20 27 | 3f 27 3a 0d 09 69 66 20 | case '|?':..if |
|00000e80| 28 2a 74 20 3d 3d 20 27 | 5c 30 27 20 7c 7c 20 28 |(*t == '|\0' || (|
|00000e90| 64 6f 74 5f 73 70 65 63 | 69 61 6c 20 26 26 20 74 |dot_spec|ial && t|
|00000ea0| 20 3d 3d 20 74 65 78 74 | 20 26 26 20 2a 74 20 3d | == text| && *t =|
|00000eb0| 3d 20 27 2e 27 29 29 0d | 09 20 20 72 65 74 75 72 |= '.')).|. retur|
|00000ec0| 6e 20 30 3b 0d 09 65 6c | 73 65 0d 09 20 20 2b 2b |n 0;..el|se.. ++|
|00000ed0| 74 3b 0d 09 62 72 65 61 | 6b 3b 0d 0d 20 20 20 20 |t;..brea|k;.. |
|00000ee0| 20 20 63 61 73 65 20 27 | 5c 5c 27 3a 0d 09 69 66 | case '|\\':..if|
|00000ef0| 20 28 2a 70 2b 2b 20 21 | 3d 20 2a 74 2b 2b 29 0d | (*p++ !|= *t++).|
|00000f00| 09 20 20 72 65 74 75 72 | 6e 20 30 3b 0d 09 62 72 |. retur|n 0;..br|
|00000f10| 65 61 6b 3b 0d 0d 20 20 | 20 20 20 20 63 61 73 65 |eak;.. | case|
|00000f20| 20 27 2a 27 3a 0d 09 69 | 66 20 28 64 6f 74 5f 73 | '*':..i|f (dot_s|
|00000f30| 70 65 63 69 61 6c 20 26 | 26 20 74 20 3d 3d 20 74 |pecial &|& t == t|
|00000f40| 65 78 74 20 26 26 20 2a | 74 20 3d 3d 20 27 2e 27 |ext && *|t == '.'|
|00000f50| 29 0d 09 20 20 72 65 74 | 75 72 6e 20 30 3b 0d 09 |).. ret|urn 0;..|
|00000f60| 72 65 74 75 72 6e 20 67 | 6c 6f 62 5f 6d 61 74 63 |return g|lob_matc|
|00000f70| 68 5f 61 66 74 65 72 5f | 73 74 61 72 20 28 70 2c |h_after_|star (p,|
|00000f80| 20 74 29 3b 0d 0d 20 20 | 20 20 20 20 63 61 73 65 | t);.. | case|
|00000f90| 20 27 5b 27 3a 0d 09 7b | 0d 09 20 20 72 65 67 69 | '[':..{|.. regi|
|00000fa0| 73 74 65 72 20 63 68 61 | 72 20 63 31 20 3d 20 2a |ster cha|r c1 = *|
|00000fb0| 74 2b 2b 3b 0d 09 20 20 | 69 6e 74 20 69 6e 76 65 |t++;.. |int inve|
|00000fc0| 72 74 3b 0d 0d 09 20 20 | 69 66 20 28 21 63 31 29 |rt;... |if (!c1)|
|00000fd0| 0d 09 20 20 20 20 72 65 | 74 75 72 6e 20 28 30 29 |.. re|turn (0)|
|00000fe0| 3b 0d 0d 09 20 20 69 6e | 76 65 72 74 20 3d 20 28 |;... in|vert = (|
|00000ff0| 28 2a 70 20 3d 3d 20 27 | 21 27 29 20 7c 7c 20 28 |(*p == '|!') || (|
|00001000| 2a 70 20 3d 3d 20 27 5e | 27 29 29 3b 0d 09 20 20 |*p == '^|'));.. |
|00001010| 69 66 20 28 69 6e 76 65 | 72 74 29 0d 09 20 20 20 |if (inve|rt).. |
|00001020| 20 70 2b 2b 3b 0d 0d 09 | 20 20 63 20 3d 20 2a 70 | p++;...| c = *p|
|00001030| 2b 2b 3b 0d 09 20 20 77 | 68 69 6c 65 20 28 31 29 |++;.. w|hile (1)|
|00001040| 0d 09 20 20 20 20 7b 0d | 09 20 20 20 20 20 20 72 |.. {.|. r|
|00001050| 65 67 69 73 74 65 72 20 | 63 68 61 72 20 63 73 74 |egister |char cst|
|00001060| 61 72 74 20 3d 20 63 2c | 20 63 65 6e 64 20 3d 20 |art = c,| cend = |
|00001070| 63 3b 0d 0d 09 20 20 20 | 20 20 20 69 66 20 28 63 |c;... | if (c|
|00001080| 20 3d 3d 20 27 5c 5c 27 | 29 0d 09 09 7b 0d 09 09 | == '\\'|)...{...|
|00001090| 20 20 63 73 74 61 72 74 | 20 3d 20 2a 70 2b 2b 3b | cstart| = *p++;|
|000010a0| 0d 09 09 20 20 63 65 6e | 64 20 3d 20 63 73 74 61 |... cen|d = csta|
|000010b0| 72 74 3b 0d 09 09 7d 0d | 0d 09 20 20 20 20 20 20 |rt;...}.|.. |
|000010c0| 69 66 20 28 63 20 3d 3d | 20 27 5c 30 27 29 0d 09 |if (c ==| '\0')..|
|000010d0| 09 72 65 74 75 72 6e 20 | 30 3b 0d 0d 09 20 20 20 |.return |0;... |
|000010e0| 20 20 20 63 20 3d 20 2a | 70 2b 2b 3b 0d 09 20 20 | c = *|p++;.. |
|000010f0| 20 20 20 20 69 66 20 28 | 63 20 3d 3d 20 27 2d 27 | if (|c == '-'|
|00001100| 29 0d 09 09 7b 0d 09 09 | 20 20 63 65 6e 64 20 3d |)...{...| cend =|
|00001110| 20 2a 70 2b 2b 3b 0d 09 | 09 20 20 69 66 20 28 63 | *p++;..|. if (c|
|00001120| 65 6e 64 20 3d 3d 20 27 | 5c 5c 27 29 0d 09 09 20 |end == '|\\')... |
|00001130| 20 20 20 63 65 6e 64 20 | 3d 20 2a 70 2b 2b 3b 0d | cend |= *p++;.|
|00001140| 09 09 20 20 69 66 20 28 | 63 65 6e 64 20 3d 3d 20 |.. if (|cend == |
|00001150| 27 5c 30 27 29 0d 09 09 | 20 20 20 20 72 65 74 75 |'\0')...| retu|
|00001160| 72 6e 20 30 3b 0d 09 09 | 20 20 63 20 3d 20 2a 70 |rn 0;...| c = *p|
|00001170| 2b 2b 3b 0d 09 09 7d 0d | 09 20 20 20 20 20 20 69 |++;...}.|. i|
|00001180| 66 20 28 63 31 20 3e 3d | 20 63 73 74 61 72 74 20 |f (c1 >=| cstart |
|00001190| 26 26 20 63 31 20 3c 3d | 20 63 65 6e 64 29 0d 09 |&& c1 <=| cend)..|
|000011a0| 09 67 6f 74 6f 20 6d 61 | 74 63 68 3b 0d 09 20 20 |.goto ma|tch;.. |
|000011b0| 20 20 20 20 69 66 20 28 | 63 20 3d 3d 20 27 5d 27 | if (|c == ']'|
|000011c0| 29 0d 09 09 62 72 65 61 | 6b 3b 0d 09 20 20 20 20 |)...brea|k;.. |
|000011d0| 7d 0d 09 20 20 69 66 20 | 28 21 69 6e 76 65 72 74 |}.. if |(!invert|
|000011e0| 29 0d 09 20 20 20 20 72 | 65 74 75 72 6e 20 30 3b |).. r|eturn 0;|
|000011f0| 0d 09 20 20 62 72 65 61 | 6b 3b 0d 0d 09 6d 61 74 |.. brea|k;...mat|
|00001200| 63 68 3a 0d 09 20 20 2f | 2a 20 53 6b 69 70 20 74 |ch:.. /|* Skip t|
|00001210| 68 65 20 72 65 73 74 20 | 6f 66 20 74 68 65 20 5b |he rest |of the [|
|00001220| 2e 2e 2e 5d 20 63 6f 6e | 73 74 72 75 63 74 20 74 |...] con|struct t|
|00001230| 68 61 74 20 61 6c 72 65 | 61 64 79 20 6d 61 74 63 |hat alre|ady matc|
|00001240| 68 65 64 2e 20 20 2a 2f | 0d 09 20 20 77 68 69 6c |hed. */|.. whil|
|00001250| 65 20 28 63 20 21 3d 20 | 27 5d 27 29 0d 09 20 20 |e (c != |']').. |
|00001260| 20 20 7b 20 0d 09 20 20 | 20 20 20 20 69 66 20 28 | { .. | if (|
|00001270| 63 20 3d 3d 20 27 5c 30 | 27 29 0d 09 09 72 65 74 |c == '\0|')...ret|
|00001280| 75 72 6e 20 30 3b 0d 09 | 20 20 20 20 20 20 63 20 |urn 0;..| c |
|00001290| 3d 20 2a 70 2b 2b 3b 0d | 09 20 20 20 20 20 20 69 |= *p++;.|. i|
|000012a0| 66 20 28 63 20 3d 3d 20 | 27 5c 30 27 29 0d 09 09 |f (c == |'\0')...|
|000012b0| 72 65 74 75 72 6e 20 30 | 3b 0d 09 20 20 20 20 20 |return 0|;.. |
|000012c0| 20 65 6c 73 65 20 69 66 | 20 28 63 20 3d 3d 20 27 | else if| (c == '|
|000012d0| 5c 5c 27 29 0d 09 09 2b | 2b 70 3b 0d 09 20 20 20 |\\')...+|+p;.. |
|000012e0| 20 7d 0d 09 20 20 69 66 | 20 28 69 6e 76 65 72 74 | }.. if| (invert|
|000012f0| 29 0d 09 20 20 20 20 72 | 65 74 75 72 6e 20 30 3b |).. r|eturn 0;|
|00001300| 0d 09 20 20 62 72 65 61 | 6b 3b 0d 09 7d 0d 0d 20 |.. brea|k;..}.. |
|00001310| 20 20 20 20 20 64 65 66 | 61 75 6c 74 3a 0d 09 69 | def|ault:..i|
|00001320| 66 20 28 63 20 21 3d 20 | 2a 74 2b 2b 29 0d 09 20 |f (c != |*t++).. |
|00001330| 20 72 65 74 75 72 6e 20 | 30 3b 0d 20 20 20 20 20 | return |0;. |
|00001340| 20 7d 0d 0d 20 20 72 65 | 74 75 72 6e 20 2a 74 20 | }.. re|turn *t |
|00001350| 3d 3d 20 27 5c 30 27 3b | 0d 7d 0d 0c 0d 2f 2a 20 |== '\0';|.}.../* |
|00001360| 4c 69 6b 65 20 67 6c 6f | 62 5f 6d 61 74 63 68 2c |Like glo|b_match,|
|00001370| 20 62 75 74 20 6d 61 74 | 63 68 20 50 41 54 54 45 | but mat|ch PATTE|
|00001380| 52 4e 20 61 67 61 69 6e | 73 74 20 61 6e 79 20 66 |RN again|st any f|
|00001390| 69 6e 61 6c 20 73 65 67 | 6d 65 6e 74 20 6f 66 20 |inal seg|ment of |
|000013a0| 54 45 58 54 2e 20 20 2a | 2f 0d 0d 73 74 61 74 69 |TEXT. *|/..stati|
|000013b0| 63 20 69 6e 74 0d 67 6c | 6f 62 5f 6d 61 74 63 68 |c int.gl|ob_match|
|000013c0| 5f 61 66 74 65 72 5f 73 | 74 61 72 20 28 70 61 74 |_after_s|tar (pat|
|000013d0| 74 65 72 6e 2c 20 74 65 | 78 74 29 0d 20 20 20 20 |tern, te|xt). |
|000013e0| 20 63 68 61 72 20 2a 70 | 61 74 74 65 72 6e 2c 20 | char *p|attern, |
|000013f0| 2a 74 65 78 74 3b 0d 7b | 0d 20 20 72 65 67 69 73 |*text;.{|. regis|
|00001400| 74 65 72 20 63 68 61 72 | 20 2a 70 20 3d 20 70 61 |ter char| *p = pa|
|00001410| 74 74 65 72 6e 2c 20 2a | 74 20 3d 20 74 65 78 74 |ttern, *|t = text|
|00001420| 3b 0d 20 20 72 65 67 69 | 73 74 65 72 20 63 68 61 |;. regi|ster cha|
|00001430| 72 20 63 2c 20 63 31 3b | 0d 0d 20 20 77 68 69 6c |r c, c1;|.. whil|
|00001440| 65 20 28 28 63 20 3d 20 | 2a 70 2b 2b 29 20 3d 3d |e ((c = |*p++) ==|
|00001450| 20 27 3f 27 20 7c 7c 20 | 63 20 3d 3d 20 27 2a 27 | '?' || |c == '*'|
|00001460| 29 0d 20 20 20 20 69 66 | 20 28 63 20 3d 3d 20 27 |). if| (c == '|
|00001470| 3f 27 20 26 26 20 2a 74 | 2b 2b 20 3d 3d 20 27 5c |?' && *t|++ == '\|
|00001480| 30 27 29 0d 20 20 20 20 | 20 20 72 65 74 75 72 6e |0'). | return|
|00001490| 20 30 3b 0d 0d 20 20 69 | 66 20 28 63 20 3d 3d 20 | 0;.. i|f (c == |
|000014a0| 27 5c 30 27 29 0d 20 20 | 20 20 72 65 74 75 72 6e |'\0'). | return|
|000014b0| 20 31 3b 0d 0d 20 20 69 | 66 20 28 63 20 3d 3d 20 | 1;.. i|f (c == |
|000014c0| 27 5c 5c 27 29 0d 20 20 | 20 20 63 31 20 3d 20 2a |'\\'). | c1 = *|
|000014d0| 70 3b 0d 20 20 65 6c 73 | 65 0d 20 20 20 20 63 31 |p;. els|e. c1|
|000014e0| 20 3d 20 63 3b 0d 0d 20 | 20 77 68 69 6c 65 20 28 | = c;.. | while (|
|000014f0| 31 29 0d 20 20 20 20 7b | 0d 20 20 20 20 20 20 69 |1). {|. i|
|00001500| 66 20 28 28 63 20 3d 3d | 20 27 5b 27 20 7c 7c 20 |f ((c ==| '[' || |
|00001510| 2a 74 20 3d 3d 20 63 31 | 29 20 26 26 20 67 6c 6f |*t == c1|) && glo|
|00001520| 62 5f 6d 61 74 63 68 20 | 28 70 20 2d 20 31 2c 20 |b_match |(p - 1, |
|00001530| 74 2c 20 30 29 29 0d 09 | 72 65 74 75 72 6e 20 31 |t, 0))..|return 1|
|00001540| 3b 0d 20 20 20 20 20 20 | 69 66 20 28 2a 74 2b 2b |;. |if (*t++|
|00001550| 20 3d 3d 20 27 5c 30 27 | 29 0d 09 72 65 74 75 72 | == '\0'|)..retur|
|00001560| 6e 20 30 3b 0d 20 20 20 | 20 7d 0d 7d 0d 0c 0d 2f |n 0;. | }.}.../|
|00001570| 2a 20 52 65 74 75 72 6e | 20 61 20 76 65 63 74 6f |* Return| a vecto|
|00001580| 72 20 6f 66 20 6e 61 6d | 65 73 20 6f 66 20 66 69 |r of nam|es of fi|
|00001590| 6c 65 73 20 69 6e 20 74 | 68 65 20 63 75 72 72 65 |les in t|he curre|
|000015a0| 6e 74 20 64 69 72 65 63 | 74 6f 72 79 2e 0d 20 20 |nt direc|tory.. |
|000015b0| 20 54 68 65 20 6e 61 6d | 65 73 20 61 72 65 20 6e | The nam|es are n|
|000015c0| 6f 74 20 69 6e 20 61 6e | 79 20 70 61 72 74 69 63 |ot in an|y partic|
|000015d0| 75 6c 61 72 20 6f 72 64 | 65 72 2e 0d 20 20 20 57 |ular ord|er.. W|
|000015e0| 69 6c 64 63 61 72 64 73 | 20 61 74 20 74 68 65 20 |ildcards| at the |
|000015f0| 62 65 67 69 6e 6e 69 6e | 67 20 6f 66 20 50 41 54 |beginnin|g of PAT|
|00001600| 20 64 6f 20 6e 6f 74 20 | 6d 61 74 63 68 20 61 6e | do not |match an|
|00001610| 20 69 6e 69 74 69 61 6c | 20 70 65 72 69 6f 64 2e | initial| period.|
|00001620| 0d 0d 20 20 20 54 68 65 | 20 76 65 63 74 6f 72 20 |.. The| vector |
|00001630| 69 73 20 74 65 72 6d 69 | 6e 61 74 65 64 20 62 79 |is termi|nated by|
|00001640| 20 61 6e 20 65 6c 65 6d | 65 6e 74 20 74 68 61 74 | an elem|ent that|
|00001650| 20 69 73 20 61 20 6e 75 | 6c 6c 20 70 6f 69 6e 74 | is a nu|ll point|
|00001660| 65 72 2e 0d 0d 20 20 20 | 54 6f 20 66 72 65 65 20 |er... |To free |
|00001670| 74 68 65 20 73 70 61 63 | 65 20 61 6c 6c 6f 63 61 |the spac|e alloca|
|00001680| 74 65 64 2c 20 66 69 72 | 73 74 20 66 72 65 65 20 |ted, fir|st free |
|00001690| 74 68 65 20 76 65 63 74 | 6f 72 27 73 20 65 6c 65 |the vect|or's ele|
|000016a0| 6d 65 6e 74 73 2c 0d 20 | 20 20 74 68 65 6e 20 66 |ments,. | then f|
|000016b0| 72 65 65 20 74 68 65 20 | 76 65 63 74 6f 72 2e 0d |ree the |vector..|
|000016c0| 0d 20 20 20 52 65 74 75 | 72 6e 20 30 20 69 66 20 |. Retu|rn 0 if |
|000016d0| 63 61 6e 6e 6f 74 20 67 | 65 74 20 65 6e 6f 75 67 |cannot g|et enoug|
|000016e0| 68 20 6d 65 6d 6f 72 79 | 20 74 6f 20 68 6f 6c 64 |h memory| to hold|
|000016f0| 20 74 68 65 20 70 6f 69 | 6e 74 65 72 0d 20 20 20 | the poi|nter. |
|00001700| 61 6e 64 20 74 68 65 20 | 6e 61 6d 65 73 2e 0d 0d |and the |names...|
|00001710| 20 20 20 52 65 74 75 72 | 6e 20 2d 31 20 69 66 20 | Retur|n -1 if |
|00001720| 63 61 6e 6e 6f 74 20 61 | 63 63 65 73 73 20 64 69 |cannot a|ccess di|
|00001730| 72 65 63 74 6f 72 79 20 | 44 49 52 2e 0d 20 20 20 |rectory |DIR.. |
|00001740| 4c 6f 6f 6b 20 69 6e 20 | 65 72 72 6e 6f 20 66 6f |Look in |errno fo|
|00001750| 72 20 6d 6f 72 65 20 69 | 6e 66 6f 72 6d 61 74 69 |r more i|nformati|
|00001760| 6f 6e 2e 20 20 2a 2f 0d | 0d 63 68 61 72 20 2a 2a |on. */.|.char **|
|00001770| 0d 67 6c 6f 62 5f 66 69 | 6c 65 6e 61 6d 65 20 28 |.glob_fi|lename (|
|00001780| 70 61 74 29 0d 20 20 20 | 20 20 63 68 61 72 20 2a |pat). | char *|
|00001790| 70 61 74 3b 0d 7b 0d 20 | 20 73 74 72 75 63 74 20 |pat;.{. | struct |
|000017a0| 67 6c 6f 62 76 61 6c 0d | 20 20 20 20 7b 0d 20 20 |globval.| {. |
|000017b0| 20 20 20 20 73 74 72 75 | 63 74 20 67 6c 6f 62 76 | stru|ct globv|
|000017c0| 61 6c 20 2a 6e 65 78 74 | 3b 0d 20 20 20 20 20 20 |al *next|;. |
|000017d0| 63 68 61 72 20 2a 6e 61 | 6d 65 3b 0d 20 20 20 20 |char *na|me;. |
|000017e0| 7d 3b 0d 0d 20 20 44 49 | 52 20 2a 64 3b 0d 20 20 |};.. DI|R *d;. |
|000017f0| 63 68 61 72 20 2a 64 69 | 72 20 3d 20 22 2e 22 3b |char *di|r = ".";|
|00001800| 0d 20 20 72 65 67 69 73 | 74 65 72 20 73 74 72 75 |. regis|ter stru|
|00001810| 63 74 20 64 69 72 65 6e | 74 20 2a 64 70 3b 0d 20 |ct diren|t *dp;. |
|00001820| 20 73 74 72 75 63 74 20 | 67 6c 6f 62 76 61 6c 20 | struct |globval |
|00001830| 2a 6c 61 73 74 6c 69 6e | 6b 3b 0d 20 20 72 65 67 |*lastlin|k;. reg|
|00001840| 69 73 74 65 72 20 73 74 | 72 75 63 74 20 67 6c 6f |ister st|ruct glo|
|00001850| 62 76 61 6c 20 2a 6e 65 | 78 74 6c 69 6e 6b 3b 0d |bval *ne|xtlink;.|
|00001860| 20 20 72 65 67 69 73 74 | 65 72 20 63 68 61 72 20 | regist|er char |
|00001870| 2a 6e 65 78 74 6e 61 6d | 65 3b 0d 20 20 75 6e 73 |*nextnam|e;. uns|
|00001880| 69 67 6e 65 64 20 69 6e | 74 20 63 6f 75 6e 74 3b |igned in|t count;|
|00001890| 0d 20 20 69 6e 74 20 6c | 6f 73 65 3b 0d 20 20 72 |. int l|ose;. r|
|000018a0| 65 67 69 73 74 65 72 20 | 63 68 61 72 20 2a 2a 6e |egister |char **n|
|000018b0| 61 6d 65 5f 76 65 63 74 | 6f 72 3b 0d 20 20 72 65 |ame_vect|or;. re|
|000018c0| 67 69 73 74 65 72 20 75 | 6e 73 69 67 6e 65 64 20 |gister u|nsigned |
|000018d0| 69 6e 74 20 69 3b 0d 0d | 20 20 64 20 3d 20 6f 70 |int i;..| d = op|
|000018e0| 65 6e 64 69 72 20 28 64 | 69 72 29 3b 0d 20 20 69 |endir (d|ir);. i|
|000018f0| 66 20 28 64 20 3d 3d 20 | 4e 55 4c 4c 29 0d 20 20 |f (d == |NULL). |
|00001900| 20 20 72 65 74 75 72 6e | 20 28 63 68 61 72 20 2a | return| (char *|
|00001910| 2a 29 20 2d 31 3b 0d 0d | 20 20 6c 61 73 74 6c 69 |*) -1;..| lastli|
|00001920| 6e 6b 20 3d 20 30 3b 0d | 20 20 63 6f 75 6e 74 20 |nk = 0;.| count |
|00001930| 3d 20 30 3b 0d 20 20 6c | 6f 73 65 20 3d 20 30 3b |= 0;. l|ose = 0;|
|00001940| 0d 0d 20 20 2f 2a 20 53 | 63 61 6e 20 74 68 65 20 |.. /* S|can the |
|00001950| 64 69 72 65 63 74 6f 72 | 79 2c 20 66 69 6e 64 69 |director|y, findi|
|00001960| 6e 67 20 61 6c 6c 20 6e | 61 6d 65 73 20 74 68 61 |ng all n|ames tha|
|00001970| 74 20 6d 61 74 63 68 2e | 0d 20 20 20 20 20 46 6f |t match.|. Fo|
|00001980| 72 20 65 61 63 68 20 6e | 61 6d 65 20 74 68 61 74 |r each n|ame that|
|00001990| 20 6d 61 74 63 68 65 73 | 2c 20 61 6c 6c 6f 63 61 | matches|, alloca|
|000019a0| 74 65 20 61 20 73 74 72 | 75 63 74 20 67 6c 6f 62 |te a str|uct glob|
|000019b0| 76 61 6c 0d 20 20 20 20 | 20 6f 6e 20 74 68 65 20 |val. | on the |
|000019c0| 73 74 61 63 6b 20 61 6e | 64 20 73 74 6f 72 65 20 |stack an|d store |
|000019d0| 74 68 65 20 6e 61 6d 65 | 20 69 6e 20 69 74 2e 0d |the name| in it..|
|000019e0| 20 20 20 20 20 43 68 61 | 69 6e 20 74 68 6f 73 65 | Cha|in those|
|000019f0| 20 73 74 72 75 63 74 73 | 20 74 6f 67 65 74 68 65 | structs| togethe|
|00001a00| 72 3b 20 6c 61 73 74 6c | 69 6e 6b 20 69 73 20 74 |r; lastl|ink is t|
|00001a10| 68 65 20 66 72 6f 6e 74 | 20 6f 66 20 74 68 65 20 |he front| of the |
|00001a20| 63 68 61 69 6e 2e 20 20 | 2a 2f 0d 20 20 77 68 69 |chain. |*/. whi|
|00001a30| 6c 65 20 28 31 29 0d 20 | 20 20 20 7b 0d 20 20 20 |le (1). | {. |
|00001a40| 20 20 20 64 70 20 3d 20 | 72 65 61 64 64 69 72 20 | dp = |readdir |
|00001a50| 28 64 29 3b 0d 20 20 20 | 20 20 20 69 66 20 28 64 |(d);. | if (d|
|00001a60| 70 20 3d 3d 20 4e 55 4c | 4c 29 0d 09 62 72 65 61 |p == NUL|L)..brea|
|00001a70| 6b 3b 0d 20 20 20 20 20 | 20 69 66 20 28 64 70 2d |k;. | if (dp-|
|00001a80| 3e 64 5f 69 6e 6f 20 21 | 3d 20 30 0d 09 20 20 26 |>d_ino !|= 0.. &|
|00001a90| 26 20 67 6c 6f 62 5f 6d | 61 74 63 68 20 28 70 61 |& glob_m|atch (pa|
|00001aa0| 74 2c 20 64 70 2d 3e 64 | 5f 6e 61 6d 65 2c 20 6e |t, dp->d|_name, n|
|00001ab0| 6f 67 6c 6f 62 5f 64 6f | 74 5f 66 69 6c 65 6e 61 |oglob_do|t_filena|
|00001ac0| 6d 65 73 29 29 0d 09 7b | 0d 09 20 20 6e 65 78 74 |mes))..{|.. next|
|00001ad0| 6c 69 6e 6b 20 3d 20 28 | 73 74 72 75 63 74 20 67 |link = (|struct g|
|00001ae0| 6c 6f 62 76 61 6c 20 2a | 29 20 61 6c 6c 6f 63 61 |lobval *|) alloca|
|00001af0| 20 28 28 6c 6f 6e 67 29 | 20 73 69 7a 65 6f 66 20 | ((long)| sizeof |
|00001b00| 28 73 74 72 75 63 74 20 | 67 6c 6f 62 76 61 6c 29 |(struct |globval)|
|00001b10| 29 3b 0d 09 20 20 6e 65 | 78 74 6c 69 6e 6b 2d 3e |);.. ne|xtlink->|
|00001b20| 6e 65 78 74 20 3d 20 6c | 61 73 74 6c 69 6e 6b 3b |next = l|astlink;|
|00001b30| 0d 09 20 20 6e 65 78 74 | 6e 61 6d 65 20 3d 20 28 |.. next|name = (|
|00001b40| 63 68 61 72 20 2a 29 20 | 6d 61 6c 6c 6f 63 20 28 |char *) |malloc (|
|00001b50| 28 73 69 7a 65 5f 74 29 | 28 44 5f 4e 41 4d 4c 45 |(size_t)|(D_NAMLE|
|00001b60| 4e 28 64 70 29 20 2b 20 | 31 29 29 3b 0d 09 20 20 |N(dp) + |1));.. |
|00001b70| 69 66 20 28 6e 65 78 74 | 6e 61 6d 65 20 3d 3d 20 |if (next|name == |
|00001b80| 4e 55 4c 4c 29 0d 09 20 | 20 20 20 7b 0d 09 20 20 |NULL).. | {.. |
|00001b90| 20 20 20 20 6c 6f 73 65 | 20 3d 20 31 3b 0d 09 20 | lose| = 1;.. |
|00001ba0| 20 20 20 20 20 62 72 65 | 61 6b 3b 0d 09 20 20 20 | bre|ak;.. |
|00001bb0| 20 7d 0d 09 20 20 6c 61 | 73 74 6c 69 6e 6b 20 3d | }.. la|stlink =|
|00001bc0| 20 6e 65 78 74 6c 69 6e | 6b 3b 0d 09 20 20 6e 65 | nextlin|k;.. ne|
|00001bd0| 78 74 6c 69 6e 6b 2d 3e | 6e 61 6d 65 20 3d 20 6e |xtlink->|name = n|
|00001be0| 65 78 74 6e 61 6d 65 3b | 0d 09 20 20 62 63 6f 70 |extname;|.. bcop|
|00001bf0| 79 20 28 64 70 2d 3e 64 | 5f 6e 61 6d 65 2c 20 6e |y (dp->d|_name, n|
|00001c00| 65 78 74 6e 61 6d 65 2c | 20 28 73 69 7a 65 5f 74 |extname,| (size_t|
|00001c10| 29 20 28 44 5f 4e 41 4d | 4c 45 4e 28 64 70 29 20 |) (D_NAM|LEN(dp) |
|00001c20| 2b 20 31 29 29 3b 0d 09 | 20 20 2b 2b 63 6f 75 6e |+ 1));..| ++coun|
|00001c30| 74 3b 0d 09 7d 0d 20 20 | 20 20 7d 0d 20 20 28 76 |t;..}. | }. (v|
|00001c40| 6f 69 64 29 20 63 6c 6f | 73 65 64 69 72 20 28 64 |oid) clo|sedir (d|
|00001c50| 29 3b 0d 0d 20 20 69 66 | 20 28 21 6c 6f 73 65 29 |);.. if| (!lose)|
|00001c60| 0d 20 20 20 20 7b 0d 20 | 20 20 20 20 20 6e 61 6d |. {. | nam|
|00001c70| 65 5f 76 65 63 74 6f 72 | 20 3d 20 28 63 68 61 72 |e_vector| = (char|
|00001c80| 20 2a 2a 29 20 6d 61 6c | 6c 6f 63 20 28 28 73 69 | **) mal|loc ((si|
|00001c90| 7a 65 5f 74 29 28 28 63 | 6f 75 6e 74 20 2b 20 31 |ze_t)((c|ount + 1|
|00001ca0| 29 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |). | |
|00001cb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001cc0| 20 20 20 20 20 20 20 20 | 20 20 2a 20 73 69 7a 65 | | * size|
|00001cd0| 6f 66 20 28 63 68 61 72 | 20 2a 29 29 29 3b 0d 20 |of (char| *)));. |
|00001ce0| 20 20 20 20 20 6c 6f 73 | 65 20 7c 3d 20 6e 61 6d | los|e |= nam|
|00001cf0| 65 5f 76 65 63 74 6f 72 | 20 3d 3d 20 4e 55 4c 4c |e_vector| == NULL|
|00001d00| 3b 0d 20 20 20 20 7d 0d | 0d 20 20 2f 2a 20 48 61 |;. }.|. /* Ha|
|00001d10| 76 65 20 77 65 20 72 75 | 6e 20 6f 75 74 20 6f 66 |ve we ru|n out of|
|00001d20| 20 6d 65 6d 6f 72 79 3f | 20 20 2a 2f 0d 20 20 69 | memory?| */. i|
|00001d30| 66 20 28 6c 6f 73 65 29 | 0d 20 20 20 20 7b 0d 20 |f (lose)|. {. |
|00001d40| 20 20 20 20 20 2f 2a 20 | 48 65 72 65 20 66 72 65 | /* |Here fre|
|00001d50| 65 20 74 68 65 20 73 74 | 72 69 6e 67 73 20 77 65 |e the st|rings we|
|00001d60| 20 68 61 76 65 20 67 6f | 74 2e 20 20 2a 2f 0d 20 | have go|t. */. |
|00001d70| 20 20 20 20 20 77 68 69 | 6c 65 20 28 6c 61 73 74 | whi|le (last|
|00001d80| 6c 69 6e 6b 29 0d 09 7b | 0d 09 20 20 66 72 65 65 |link)..{|.. free|
|00001d90| 20 28 6c 61 73 74 6c 69 | 6e 6b 2d 3e 6e 61 6d 65 | (lastli|nk->name|
|00001da0| 29 3b 0d 09 20 20 6c 61 | 73 74 6c 69 6e 6b 20 3d |);.. la|stlink =|
|00001db0| 20 6c 61 73 74 6c 69 6e | 6b 2d 3e 6e 65 78 74 3b | lastlin|k->next;|
|00001dc0| 0d 09 7d 0d 20 20 20 20 | 20 20 72 65 74 75 72 6e |..}. | return|
|00001dd0| 20 4e 55 4c 4c 3b 0d 20 | 20 20 20 7d 0d 0d 20 20 | NULL;. | }.. |
|00001de0| 2f 2a 20 43 6f 70 79 20 | 74 68 65 20 6e 61 6d 65 |/* Copy |the name|
|00001df0| 20 70 6f 69 6e 74 65 72 | 73 20 66 72 6f 6d 20 74 | pointer|s from t|
|00001e00| 68 65 20 6c 69 6e 6b 65 | 64 20 6c 69 73 74 20 69 |he linke|d list i|
|00001e10| 6e 74 6f 20 74 68 65 20 | 76 65 63 74 6f 72 2e 20 |nto the |vector. |
|00001e20| 20 2a 2f 0d 20 20 66 6f | 72 20 28 69 20 3d 20 30 | */. fo|r (i = 0|
|00001e30| 3b 20 69 20 3c 20 63 6f | 75 6e 74 3b 20 2b 2b 69 |; i < co|unt; ++i|
|00001e40| 29 0d 20 20 20 20 7b 0d | 20 20 20 20 20 20 6e 61 |). {.| na|
|00001e50| 6d 65 5f 76 65 63 74 6f | 72 5b 69 5d 20 3d 20 6c |me_vecto|r[i] = l|
|00001e60| 61 73 74 6c 69 6e 6b 2d | 3e 6e 61 6d 65 3b 0d 20 |astlink-|>name;. |
|00001e70| 20 20 20 20 20 6c 61 73 | 74 6c 69 6e 6b 20 3d 20 | las|tlink = |
|00001e80| 6c 61 73 74 6c 69 6e 6b | 2d 3e 6e 65 78 74 3b 0d |lastlink|->next;.|
|00001e90| 20 20 20 20 7d 0d 0d 20 | 20 6e 61 6d 65 5f 76 65 | }.. | name_ve|
|00001ea0| 63 74 6f 72 5b 63 6f 75 | 6e 74 5d 20 3d 20 4e 55 |ctor[cou|nt] = NU|
|00001eb0| 4c 4c 3b 0d 20 20 72 65 | 74 75 72 6e 20 6e 61 6d |LL;. re|turn nam|
|00001ec0| 65 5f 76 65 63 74 6f 72 | 3b 0d 7d 0d 0d 0d 73 74 |e_vector|;.}...st|
|00001ed0| 61 74 69 63 20 69 6e 74 | 20 63 6f 6d 70 61 72 28 |atic int| compar(|
|00001ee0| 63 6f 6e 73 74 20 76 6f | 69 64 20 2a 73 31 2c 20 |const vo|id *s1, |
|00001ef0| 63 6f 6e 73 74 20 76 6f | 69 64 20 2a 73 32 29 0d |const vo|id *s2).|
|00001f00| 0d 7b 0d 20 20 20 72 65 | 74 75 72 6e 20 73 74 72 |.{. re|turn str|
|00001f10| 63 6d 70 28 2a 28 63 68 | 61 72 20 2a 2a 29 20 73 |cmp(*(ch|ar **) s|
|00001f20| 31 2c 20 2a 28 63 68 61 | 72 20 2a 2a 29 73 32 29 |1, *(cha|r **)s2)|
|00001f30| 3b 0d 7d 0d 0d 0d 73 74 | 72 75 63 74 20 6c 6e 6f |;.}...st|ruct lno|
|00001f40| 64 65 3b 0d 0d 73 74 72 | 75 63 74 20 6c 6e 6f 64 |de;..str|uct lnod|
|00001f50| 65 20 7b 0d 20 20 20 63 | 68 61 72 20 2a 2a 61 72 |e {. c|har **ar|
|00001f60| 67 76 5f 62 6c 6f 63 6b | 3b 0d 20 20 20 73 74 72 |gv_block|;. str|
|00001f70| 75 63 74 20 6c 6e 6f 64 | 65 20 2a 6e 65 78 74 3b |uct lnod|e *next;|
|00001f80| 0d 7d 3b 0d 0d 2f 2a 20 | 41 63 63 65 70 74 20 74 |.};../* |Accept t|
|00001f90| 68 65 20 61 64 64 72 65 | 73 73 20 6f 66 20 61 72 |he addre|ss of ar|
|00001fa0| 67 63 20 61 6e 64 20 61 | 72 67 76 20 61 6e 64 20 |gc and a|rgv and |
|00001fb0| 72 65 74 75 72 6e 20 61 | 20 6e 65 77 20 76 65 63 |return a| new vec|
|00001fc0| 74 6f 72 20 61 6e 64 0d | 20 20 20 63 6f 75 6e 74 |tor and.| count|
|00001fd0| 20 61 66 74 65 72 20 66 | 69 6c 65 6e 61 6d 65 20 | after f|ilename |
|00001fe0| 67 6c 6f 62 62 69 6e 67 | 2e 20 20 54 68 69 73 20 |globbing|. This |
|00001ff0| 69 6d 70 6c 65 6d 65 6e | 74 61 74 69 6f 6e 20 64 |implemen|tation d|
|00002000| 6f 65 73 20 4e 4f 54 0d | 20 20 20 72 65 63 6f 67 |oes NOT.| recog|
|00002010| 6e 69 7a 65 20 70 61 74 | 68 6e 61 6d 65 73 2e 20 |nize pat|hnames. |
|00002020| 20 54 68 69 6e 6b 73 20 | 6c 69 6b 65 20 22 2f 22 | Thinks |like "/"|
|00002030| 20 61 6e 64 20 22 3a 22 | 20 77 69 6c 6c 20 62 65 | and ":"| will be|
|00002040| 20 74 72 65 61 74 65 64 | 0d 20 20 20 61 73 20 70 | treated|. as p|
|00002050| 61 72 74 20 6f 66 20 74 | 68 65 20 66 69 6c 65 6e |art of t|he filen|
|00002060| 61 6d 65 2e 20 20 45 66 | 66 65 63 74 69 76 65 6c |ame. Ef|fectivel|
|00002070| 79 2c 20 79 6f 75 20 67 | 6c 6f 62 20 6f 6e 6c 79 |y, you g|lob only|
|00002080| 20 77 69 74 68 69 6e 20 | 74 68 65 0d 20 20 20 63 | within |the. c|
|00002090| 75 72 72 65 6e 74 20 64 | 69 72 65 63 74 6f 72 79 |urrent d|irectory|
|000020a0| 2e 20 20 54 68 65 20 66 | 69 6c 65 73 20 66 6f 75 |. The f|iles fou|
|000020b0| 6e 64 20 61 72 65 20 73 | 6f 72 74 65 64 2e 0d 2a |nd are s|orted..*|
|000020c0| 2f 0d 0d 76 6f 69 64 20 | 67 6c 6f 62 5f 61 72 67 |/..void |glob_arg|
|000020d0| 76 28 61 72 67 63 2c 20 | 61 72 67 76 29 0d 20 20 |v(argc, |argv). |
|000020e0| 20 69 6e 74 20 2a 61 72 | 67 63 3b 0d 20 20 20 63 | int *ar|gc;. c|
|000020f0| 68 61 72 20 2a 2a 2a 61 | 72 67 76 3b 0d 7b 0d 20 |har ***a|rgv;.{. |
|00002100| 20 20 69 6e 74 20 69 2c | 20 6a 3b 0d 20 20 20 63 | int i,| j;. c|
|00002110| 68 61 72 20 2a 2a 72 65 | 74 76 61 6c 2c 20 2a 2a |har **re|tval, **|
|00002120| 76 61 6c 75 65 3b 0d 20 | 20 20 69 6e 74 20 54 6f |value;. | int To|
|00002130| 74 61 6c 46 69 6c 65 73 | 20 3d 20 30 2c 20 4e 75 |talFiles| = 0, Nu|
|00002140| 6d 46 69 6c 65 73 3b 0d | 20 20 20 73 74 72 75 63 |mFiles;.| struc|
|00002150| 74 20 6c 6e 6f 64 65 20 | 2a 74 6d 70 2c 20 2a 68 |t lnode |*tmp, *h|
|00002160| 65 61 64 3d 4e 55 4c 4c | 2c 20 2a 63 75 72 3b 0d |ead=NULL|, *cur;.|
|00002170| 20 20 20 0d 20 20 20 69 | 66 20 28 2a 61 72 67 63 | . i|f (*argc|
|00002180| 20 3c 20 32 29 20 72 65 | 74 75 72 6e 3b 20 2f 2a | < 2) re|turn; /*|
|00002190| 20 4e 6f 74 68 69 6e 67 | 20 74 6f 20 67 6c 6f 62 | Nothing| to glob|
|000021a0| 20 2a 2f 0d 20 20 20 0d | 20 20 20 66 6f 72 20 28 | */. .| for (|
|000021b0| 69 20 3d 20 31 3b 20 69 | 20 3c 20 2a 61 72 67 63 |i = 1; i| < *argc|
|000021c0| 3b 20 69 2b 2b 29 20 7b | 20 0d 20 20 20 20 20 20 |; i++) {| . |
|000021d0| 69 66 20 28 67 6c 6f 62 | 5f 70 61 74 74 65 72 6e |if (glob|_pattern|
|000021e0| 5f 70 20 28 28 2a 61 72 | 67 76 29 5b 69 5d 29 29 |_p ((*ar|gv)[i]))|
|000021f0| 0d 20 20 20 20 20 20 20 | 20 20 76 61 6c 75 65 20 |. | value |
|00002200| 3d 20 67 6c 6f 62 5f 66 | 69 6c 65 6e 61 6d 65 20 |= glob_f|ilename |
|00002210| 28 28 2a 61 72 67 76 29 | 5b 69 5d 29 3b 0d 20 20 |((*argv)|[i]);. |
|00002220| 20 20 20 20 20 65 6c 73 | 65 20 7b 20 20 20 20 20 | els|e { |
|00002230| 20 20 20 2f 2a 20 44 6f | 20 6e 6f 74 68 69 6e 67 | /* Do| nothing|
|00002240| 20 74 6f 20 6e 61 6d 65 | 73 20 77 69 74 68 20 6e | to name|s with n|
|00002250| 6f 20 6d 61 67 69 63 20 | 63 68 61 72 73 20 2a 2f |o magic |chars */|
|00002260| 0d 20 20 20 20 20 20 20 | 20 20 20 76 61 6c 75 65 |. | value|
|00002270| 20 3d 20 28 63 68 61 72 | 20 2a 2a 29 20 6d 61 6c | = (char| **) mal|
|00002280| 6c 6f 63 28 28 73 69 7a | 65 5f 74 29 20 32 2a 73 |loc((siz|e_t) 2*s|
|00002290| 69 7a 65 6f 66 28 63 68 | 61 72 20 2a 29 29 3b 0d |izeof(ch|ar *));.|
|000022a0| 20 20 20 20 20 20 20 20 | 20 20 76 61 6c 75 65 5b | | value[|
|000022b0| 30 5d 20 3d 20 28 2a 61 | 72 67 76 29 5b 69 5d 3b |0] = (*a|rgv)[i];|
|000022c0| 0d 20 20 20 20 20 20 20 | 20 20 20 76 61 6c 75 65 |. | value|
|000022d0| 5b 31 5d 20 3d 20 4e 55 | 4c 4c 3b 0d 20 20 20 20 |[1] = NU|LL;. |
|000022e0| 20 20 20 7d 0d 20 20 20 | 20 20 20 20 0d 20 20 20 | }. | . |
|000022f0| 20 20 20 69 66 20 28 76 | 61 6c 75 65 20 3d 3d 20 | if (v|alue == |
|00002300| 4e 55 4c 4c 29 20 7b 0d | 09 20 20 20 20 20 65 6d |NULL) {.|. em|
|00002310| 69 74 64 61 74 61 28 22 | 25 73 5c 6e 22 2c 20 22 |itdata("|%s\n", "|
|00002320| 4f 75 74 20 6f 66 20 6d | 65 6d 6f 72 79 2e 22 29 |Out of m|emory.")|
|00002330| 3b 0d 09 20 20 20 20 20 | 65 78 69 74 28 31 29 3b |;.. |exit(1);|
|00002340| 20 20 20 0d 20 20 20 20 | 20 20 7d 20 65 6c 73 65 | . | } else|
|00002350| 20 69 66 20 28 28 69 6e | 74 29 20 76 61 6c 75 65 | if ((in|t) value|
|00002360| 20 3d 3d 20 2d 31 29 0d | 09 20 20 20 20 20 65 6d | == -1).|. em|
|00002370| 69 74 64 61 74 61 28 22 | 25 73 5c 6e 22 2c 20 2a |itdata("|%s\n", *|
|00002380| 61 72 67 76 5b 69 5d 29 | 3b 0d 20 20 20 20 20 20 |argv[i])|;. |
|00002390| 65 6c 73 65 20 7b 0d 20 | 20 20 20 20 20 20 20 20 |else {. | |
|000023a0| 74 6d 70 20 3d 20 28 73 | 74 72 75 63 74 20 6c 6e |tmp = (s|truct ln|
|000023b0| 6f 64 65 20 2a 29 20 6d | 61 6c 6c 6f 63 28 28 73 |ode *) m|alloc((s|
|000023c0| 69 7a 65 5f 74 29 20 73 | 69 7a 65 6f 66 28 73 74 |ize_t) s|izeof(st|
|000023d0| 72 75 63 74 20 6c 6e 6f | 64 65 29 29 3b 0d 20 20 |ruct lno|de));. |
|000023e0| 20 20 20 20 20 20 20 74 | 6d 70 2d 3e 6e 65 78 74 | t|mp->next|
|000023f0| 20 3d 20 4e 55 4c 4c 3b | 0d 20 20 20 20 20 20 20 | = NULL;|. |
|00002400| 20 20 74 6d 70 2d 3e 61 | 72 67 76 5f 62 6c 6f 63 | tmp->a|rgv_bloc|
|00002410| 6b 20 3d 20 76 61 6c 75 | 65 3b 0d 20 20 20 20 20 |k = valu|e;. |
|00002420| 20 20 20 20 4e 75 6d 46 | 69 6c 65 73 20 3d 20 30 | NumF|iles = 0|
|00002430| 3b 0d 20 20 20 20 20 20 | 20 20 20 66 6f 72 20 28 |;. | for (|
|00002440| 6a 20 3d 20 30 3b 20 76 | 61 6c 75 65 5b 6a 5d 20 |j = 0; v|alue[j] |
|00002450| 21 3d 20 4e 55 4c 4c 3b | 20 6a 2b 2b 29 20 7b 0d |!= NULL;| j++) {.|
|00002460| 20 20 20 20 20 20 20 20 | 20 20 20 20 54 6f 74 61 | | Tota|
|00002470| 6c 46 69 6c 65 73 2b 2b | 3b 0d 20 20 20 20 20 20 |lFiles++|;. |
|00002480| 20 20 20 20 20 20 4e 75 | 6d 46 69 6c 65 73 2b 2b | Nu|mFiles++|
|00002490| 3b 0d 20 20 20 20 20 20 | 20 20 20 7d 0d 0d 20 20 |;. | }.. |
|000024a0| 20 20 20 20 20 20 20 71 | 73 6f 72 74 28 28 76 6f | q|sort((vo|
|000024b0| 69 64 20 2a 29 20 76 61 | 6c 75 65 2c 20 28 73 69 |id *) va|lue, (si|
|000024c0| 7a 65 5f 74 29 20 4e 75 | 6d 46 69 6c 65 73 2c 20 |ze_t) Nu|mFiles, |
|000024d0| 73 69 7a 65 6f 66 28 63 | 68 61 72 20 2a 29 2c 0d |sizeof(c|har *),.|
|000024e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 63 | | c|
|000024f0| 6f 6d 70 61 72 29 3b 0d | 20 20 20 20 20 20 20 20 |ompar);.| |
|00002500| 20 2f 2a 20 61 70 70 65 | 6e 64 20 74 6f 20 6c 69 | /* appe|nd to li|
|00002510| 73 74 20 2a 2f 0d 20 20 | 20 20 20 20 20 20 20 69 |st */. | i|
|00002520| 66 20 28 68 65 61 64 20 | 3d 3d 20 4e 55 4c 4c 29 |f (head |== NULL)|
|00002530| 20 68 65 61 64 20 3d 74 | 6d 70 3b 0d 20 20 20 20 | head =t|mp;. |
|00002540| 20 20 20 20 20 65 6c 73 | 65 20 7b 0d 20 20 20 20 | els|e {. |
|00002550| 20 20 20 20 20 20 20 20 | 63 75 72 20 3d 20 68 65 | |cur = he|
|00002560| 61 64 3b 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |ad;. | |
|00002570| 77 68 69 6c 65 20 28 63 | 75 72 2d 3e 6e 65 78 74 |while (c|ur->next|
|00002580| 20 21 3d 20 4e 55 4c 4c | 29 20 63 75 72 20 3d 20 | != NULL|) cur = |
|00002590| 63 75 72 2d 3e 6e 65 78 | 74 3b 0d 20 20 20 20 20 |cur->nex|t;. |
|000025a0| 20 20 20 20 20 20 20 63 | 75 72 2d 3e 6e 65 78 74 | c|ur->next|
|000025b0| 20 3d 20 74 6d 70 3b 0d | 20 20 20 20 20 20 20 20 | = tmp;.| |
|000025c0| 20 7d 20 20 20 0d 20 20 | 20 20 20 20 7d 0d 20 20 | } . | }. |
|000025d0| 20 7d 20 2f 2a 20 66 6f | 72 20 2a 2f 0d 20 20 20 | } /* fo|r */. |
|000025e0| 0d 20 20 20 72 65 74 76 | 61 6c 20 3d 20 28 63 68 |. retv|al = (ch|
|000025f0| 61 72 20 2a 2a 29 20 6d | 61 6c 6c 6f 63 28 28 73 |ar **) m|alloc((s|
|00002600| 69 7a 65 5f 74 29 20 28 | 54 6f 74 61 6c 46 69 6c |ize_t) (|TotalFil|
|00002610| 65 73 2b 31 29 2a 73 69 | 7a 65 6f 66 28 63 68 61 |es+1)*si|zeof(cha|
|00002620| 72 20 2a 29 29 3b 0d 20 | 20 20 63 75 72 20 3d 20 |r *));. | cur = |
|00002630| 68 65 61 64 3b 0d 20 20 | 20 72 65 74 76 61 6c 5b |head;. | retval[|
|00002640| 30 5d 20 3d 20 28 2a 61 | 72 67 76 29 5b 30 5d 3b |0] = (*a|rgv)[0];|
|00002650| 0d 20 20 20 69 20 3d 20 | 31 3b 0d 20 20 20 77 68 |. i = |1;. wh|
|00002660| 69 6c 65 20 28 63 75 72 | 20 21 3d 20 4e 55 4c 4c |ile (cur| != NULL|
|00002670| 29 20 7b 0d 20 20 20 20 | 20 20 6a 20 3d 20 30 3b |) {. | j = 0;|
|00002680| 0d 20 20 20 20 20 20 77 | 68 69 6c 65 20 28 63 75 |. w|hile (cu|
|00002690| 72 2d 3e 61 72 67 76 5f | 62 6c 6f 63 6b 5b 6a 5d |r->argv_|block[j]|
|000026a0| 20 21 3d 20 4e 55 4c 4c | 29 20 7b 0d 20 20 20 20 | != NULL|) {. |
|000026b0| 20 20 20 20 20 72 65 74 | 76 61 6c 5b 69 5d 20 3d | ret|val[i] =|
|000026c0| 20 63 75 72 2d 3e 61 72 | 67 76 5f 62 6c 6f 63 6b | cur->ar|gv_block|
|000026d0| 5b 6a 5d 3b 0d 20 20 20 | 20 20 20 20 20 20 69 2b |[j];. | i+|
|000026e0| 2b 3b 0d 20 20 20 20 20 | 20 20 20 20 6a 2b 2b 3b |+;. | j++;|
|000026f0| 0d 20 20 20 20 20 20 7d | 0d 20 20 20 20 20 20 74 |. }|. t|
|00002700| 6d 70 20 3d 20 63 75 72 | 3b 0d 20 20 20 20 20 20 |mp = cur|;. |
|00002710| 63 75 72 20 3d 20 63 75 | 72 2d 3e 6e 65 78 74 3b |cur = cu|r->next;|
|00002720| 0d 20 20 20 20 20 20 66 | 72 65 65 28 74 6d 70 2d |. f|ree(tmp-|
|00002730| 3e 61 72 67 76 5f 62 6c | 6f 63 6b 29 3b 0d 20 20 |>argv_bl|ock);. |
|00002740| 20 20 20 20 66 72 65 65 | 28 74 6d 70 29 3b 0d 20 | free|(tmp);. |
|00002750| 20 20 7d 0d 20 20 20 0d | 20 20 20 2a 61 72 67 63 | }. .| *argc|
|00002760| 20 3d 20 54 6f 74 61 6c | 46 69 6c 65 73 2b 31 3b | = Total|Files+1;|
|00002770| 0d 20 20 20 2a 61 72 67 | 76 20 3d 20 72 65 74 76 |. *arg|v = retv|
|00002780| 61 6c 3b 0d 20 20 0d 7d | 0d 0d 73 74 61 74 69 63 |al;. .}|..static|
|00002790| 20 73 68 6f 72 74 20 66 | 69 6e 69 3b 0d 73 74 61 | short f|ini;.sta|
|000027a0| 74 69 63 20 73 68 6f 72 | 74 20 63 75 72 70 6f 73 |tic shor|t curpos|
|000027b0| 3b 0d 0d 73 74 61 74 69 | 63 20 63 68 61 72 20 2a |;..stati|c char *|
|000027c0| 66 69 6e 64 66 69 6c 65 | 28 66 6c 69 73 74 29 0d |findfile|(flist).|
|000027d0| 20 20 20 63 68 61 72 20 | 2a 66 6c 69 73 74 3b 0d | char |*flist;.|
|000027e0| 7b 0d 20 20 20 69 6e 74 | 20 65 6e 64 70 6f 73 3b |{. int| endpos;|
|000027f0| 0d 20 20 20 63 68 61 72 | 20 2a 70 3b 0d 20 20 20 |. char| *p;. |
|00002800| 0d 20 20 20 69 66 20 28 | 66 69 6e 69 29 20 72 65 |. if (|fini) re|
|00002810| 74 75 72 6e 20 4e 55 4c | 4c 3b 0d 20 20 20 0d 20 |turn NUL|L;. . |
|00002820| 20 20 77 68 69 6c 65 20 | 28 66 6c 69 73 74 5b 63 | while |(flist[c|
|00002830| 75 72 70 6f 73 5d 20 3d | 3d 20 27 20 27 20 7c 7c |urpos] =|= ' ' |||
|00002840| 20 66 6c 69 73 74 5b 63 | 75 72 70 6f 73 5d 20 3d | flist[c|urpos] =|
|00002850| 3d 20 27 5c 74 27 29 0d | 20 20 20 20 20 20 63 75 |= '\t').| cu|
|00002860| 72 70 6f 73 2b 2b 3b 20 | 20 2f 2a 20 73 6b 69 70 |rpos++; | /* skip|
|00002870| 20 77 68 69 74 65 73 70 | 61 63 65 20 2a 2f 0d 20 | whitesp|ace */. |
|00002880| 20 20 20 20 20 0d 20 20 | 20 65 6e 64 70 6f 73 20 | . | endpos |
|00002890| 3d 20 63 75 72 70 6f 73 | 3b 0d 20 20 20 77 68 69 |= curpos|;. whi|
|000028a0| 6c 65 20 28 66 6c 69 73 | 74 5b 65 6e 64 70 6f 73 |le (flis|t[endpos|
|000028b0| 5d 20 21 3d 20 27 20 27 | 20 26 26 20 66 6c 69 73 |] != ' '| && flis|
|000028c0| 74 5b 65 6e 64 70 6f 73 | 5d 20 21 3d 20 27 5c 74 |t[endpos|] != '\t|
|000028d0| 27 20 26 26 0d 20 20 20 | 20 20 20 20 20 20 20 66 |' &&. | f|
|000028e0| 6c 69 73 74 5b 65 6e 64 | 70 6f 73 5d 20 21 3d 20 |list[end|pos] != |
|000028f0| 27 5c 30 27 29 20 65 6e | 64 70 6f 73 2b 2b 3b 20 |'\0') en|dpos++; |
|00002900| 20 2f 2a 20 73 6b 69 70 | 20 74 6f 20 77 68 69 74 | /* skip| to whit|
|00002910| 65 20 73 70 61 63 65 20 | 2a 2f 0d 20 20 20 20 20 |e space |*/. |
|00002920| 20 20 20 20 20 0d 20 20 | 20 69 66 20 28 65 6e 64 | . | if (end|
|00002930| 70 6f 73 20 3d 3d 20 63 | 75 72 70 6f 73 29 20 72 |pos == c|urpos) r|
|00002940| 65 74 75 72 6e 20 4e 55 | 4c 4c 3b 0d 20 20 20 69 |eturn NU|LL;. i|
|00002950| 66 20 28 66 6c 69 73 74 | 5b 65 6e 64 70 6f 73 5d |f (flist|[endpos]|
|00002960| 20 3d 3d 20 27 5c 30 27 | 29 20 66 69 6e 69 20 3d | == '\0'|) fini =|
|00002970| 20 31 3b 0d 20 20 0d 20 | 20 20 70 20 3d 20 28 63 | 1;. . | p = (c|
|00002980| 68 61 72 20 2a 29 20 6d | 61 6c 6c 6f 63 28 28 73 |har *) m|alloc((s|
|00002990| 69 7a 65 5f 74 29 20 28 | 65 6e 64 70 6f 73 20 2d |ize_t) (|endpos -|
|000029a0| 20 63 75 72 70 6f 73 20 | 2b 20 31 29 29 3b 0d 20 | curpos |+ 1));. |
|000029b0| 20 20 6d 65 6d 63 70 79 | 28 70 2c 20 26 28 66 6c | memcpy|(p, &(fl|
|000029c0| 69 73 74 5b 63 75 72 70 | 6f 73 5d 29 2c 20 28 73 |ist[curp|os]), (s|
|000029d0| 69 7a 65 5f 74 29 20 28 | 65 6e 64 70 6f 73 20 2d |ize_t) (|endpos -|
|000029e0| 20 63 75 72 70 6f 73 29 | 29 3b 0d 20 20 20 70 5b | curpos)|);. p[|
|000029f0| 65 6e 64 70 6f 73 20 2d | 20 63 75 72 70 6f 73 5d |endpos -| curpos]|
|00002a00| 20 3d 20 27 5c 30 27 3b | 0d 20 20 20 0d 20 20 20 | = '\0';|. . |
|00002a10| 63 75 72 70 6f 73 20 3d | 20 65 6e 64 70 6f 73 20 |curpos =| endpos |
|00002a20| 2b 20 31 3b 0d 20 20 20 | 0d 20 20 20 72 65 74 75 |+ 1;. |. retu|
|00002a30| 72 6e 20 70 3b 0d 7d 0d | 0d 0d 0d 76 6f 69 64 20 |rn p;.}.|...void |
|00002a40| 67 6c 6f 62 5f 66 69 6c | 65 6c 69 73 74 28 66 6c |glob_fil|elist(fl|
|00002a50| 69 73 74 2c 20 61 72 67 | 63 2c 20 61 72 67 76 29 |ist, arg|c, argv)|
|00002a60| 0d 20 20 20 63 68 61 72 | 20 2a 66 6c 69 73 74 3b |. char| *flist;|
|00002a70| 0d 20 20 20 69 6e 74 20 | 2a 61 72 67 63 3b 0d 20 |. int |*argc;. |
|00002a80| 20 20 63 68 61 72 20 2a | 2a 2a 61 72 67 76 3b 0d | char *|**argv;.|
|00002a90| 7b 0d 20 20 20 69 6e 74 | 20 69 2c 20 6a 3b 0d 20 |{. int| i, j;. |
|00002aa0| 20 20 63 68 61 72 20 2a | 2a 72 65 74 76 61 6c 2c | char *|*retval,|
|00002ab0| 20 2a 2a 76 61 6c 75 65 | 3b 0d 20 20 20 63 68 61 | **value|;. cha|
|00002ac0| 72 20 2a 66 69 6c 65 3b | 0d 20 20 20 69 6e 74 20 |r *file;|. int |
|00002ad0| 54 6f 74 61 6c 46 69 6c | 65 73 20 3d 20 30 2c 20 |TotalFil|es = 0, |
|00002ae0| 4e 75 6d 46 69 6c 65 73 | 3b 0d 20 20 20 73 74 72 |NumFiles|;. str|
|00002af0| 75 63 74 20 6c 6e 6f 64 | 65 20 2a 74 6d 70 2c 20 |uct lnod|e *tmp, |
|00002b00| 2a 68 65 61 64 3d 4e 55 | 4c 4c 2c 20 2a 63 75 72 |*head=NU|LL, *cur|
|00002b10| 3b 0d 20 20 20 0d 20 20 | 20 66 69 6e 69 20 3d 20 |;. . | fini = |
|00002b20| 30 3b 0d 20 20 20 63 75 | 72 70 6f 73 20 3d 20 30 |0;. cu|rpos = 0|
|00002b30| 3b 0d 20 20 20 0d 20 20 | 20 77 68 69 6c 65 20 28 |;. . | while (|
|00002b40| 28 66 69 6c 65 20 3d 20 | 66 69 6e 64 66 69 6c 65 |(file = |findfile|
|00002b50| 28 66 6c 69 73 74 29 29 | 20 21 3d 20 4e 55 4c 4c |(flist))| != NULL|
|00002b60| 29 20 7b 0d 20 20 20 0d | 20 20 20 20 20 20 69 66 |) {. .| if|
|00002b70| 20 28 67 6c 6f 62 5f 70 | 61 74 74 65 72 6e 5f 70 | (glob_p|attern_p|
|00002b80| 20 28 66 69 6c 65 29 29 | 0d 20 20 20 20 20 20 20 | (file))|. |
|00002b90| 20 20 76 61 6c 75 65 20 | 3d 20 67 6c 6f 62 5f 66 | value |= glob_f|
|00002ba0| 69 6c 65 6e 61 6d 65 20 | 28 66 69 6c 65 29 3b 0d |ilename |(file);.|
|00002bb0| 20 20 20 20 20 20 20 65 | 6c 73 65 20 7b 20 20 20 | e|lse { |
|00002bc0| 20 20 20 20 20 2f 2a 20 | 44 6f 20 6e 6f 74 68 69 | /* |Do nothi|
|00002bd0| 6e 67 20 74 6f 20 6e 61 | 6d 65 73 20 77 69 74 68 |ng to na|mes with|
|00002be0| 20 6e 6f 20 6d 61 67 69 | 63 20 63 68 61 72 73 20 | no magi|c chars |
|00002bf0| 2a 2f 0d 20 20 20 20 20 | 20 20 20 20 20 76 61 6c |*/. | val|
|00002c00| 75 65 20 3d 20 28 63 68 | 61 72 20 2a 2a 29 20 6d |ue = (ch|ar **) m|
|00002c10| 61 6c 6c 6f 63 28 28 73 | 69 7a 65 5f 74 29 20 32 |alloc((s|ize_t) 2|
|00002c20| 2a 73 69 7a 65 6f 66 28 | 63 68 61 72 20 2a 29 29 |*sizeof(|char *))|
|00002c30| 3b 0d 20 20 20 20 20 20 | 20 20 20 20 76 61 6c 75 |;. | valu|
|00002c40| 65 5b 30 5d 20 3d 20 66 | 69 6c 65 3b 0d 20 20 20 |e[0] = f|ile;. |
|00002c50| 20 20 20 20 20 20 20 76 | 61 6c 75 65 5b 31 5d 20 | v|alue[1] |
|00002c60| 3d 20 4e 55 4c 4c 3b 0d | 20 20 20 20 20 20 20 7d |= NULL;.| }|
|00002c70| 0d 20 20 20 20 20 20 20 | 0d 20 20 20 20 20 20 69 |. |. i|
|00002c80| 66 20 28 76 61 6c 75 65 | 20 3d 3d 20 4e 55 4c 4c |f (value| == NULL|
|00002c90| 29 20 7b 0d 09 20 20 20 | 20 20 65 6d 69 74 64 61 |) {.. | emitda|
|00002ca0| 74 61 28 22 25 73 5c 6e | 22 2c 20 22 4f 75 74 20 |ta("%s\n|", "Out |
|00002cb0| 6f 66 20 6d 65 6d 6f 72 | 79 2e 22 29 3b 0d 09 20 |of memor|y.");.. |
|00002cc0| 20 20 20 20 65 78 69 74 | 28 31 29 3b 20 20 20 0d | exit|(1); .|
|00002cd0| 20 20 20 20 20 20 7d 20 | 65 6c 73 65 20 69 66 20 | } |else if |
|00002ce0| 28 28 69 6e 74 29 20 76 | 61 6c 75 65 20 3d 3d 20 |((int) v|alue == |
|00002cf0| 2d 31 29 0d 09 20 20 20 | 20 20 65 6d 69 74 64 61 |-1).. | emitda|
|00002d00| 74 61 28 22 25 73 5c 6e | 22 2c 20 2a 61 72 67 76 |ta("%s\n|", *argv|
|00002d10| 5b 69 5d 29 3b 0d 20 20 | 20 20 20 20 65 6c 73 65 |[i]);. | else|
|00002d20| 20 7b 0d 20 20 20 20 20 | 20 20 20 20 74 6d 70 20 | {. | tmp |
|00002d30| 3d 20 28 73 74 72 75 63 | 74 20 6c 6e 6f 64 65 20 |= (struc|t lnode |
|00002d40| 2a 29 20 6d 61 6c 6c 6f | 63 28 28 73 69 7a 65 5f |*) mallo|c((size_|
|00002d50| 74 29 20 73 69 7a 65 6f | 66 28 73 74 72 75 63 74 |t) sizeo|f(struct|
|00002d60| 20 6c 6e 6f 64 65 29 29 | 3b 0d 20 20 20 20 20 20 | lnode))|;. |
|00002d70| 20 20 20 74 6d 70 2d 3e | 6e 65 78 74 20 3d 20 4e | tmp->|next = N|
|00002d80| 55 4c 4c 3b 0d 20 20 20 | 20 20 20 20 20 20 74 6d |ULL;. | tm|
|00002d90| 70 2d 3e 61 72 67 76 5f | 62 6c 6f 63 6b 20 3d 20 |p->argv_|block = |
|00002da0| 76 61 6c 75 65 3b 0d 20 | 20 20 20 20 20 20 20 20 |value;. | |
|00002db0| 4e 75 6d 46 69 6c 65 73 | 20 3d 20 30 3b 0d 20 20 |NumFiles| = 0;. |
|00002dc0| 20 20 20 20 20 20 20 66 | 6f 72 20 28 6a 20 3d 20 | f|or (j = |
|00002dd0| 30 3b 20 76 61 6c 75 65 | 5b 6a 5d 20 21 3d 20 4e |0; value|[j] != N|
|00002de0| 55 4c 4c 3b 20 6a 2b 2b | 29 20 7b 0d 20 20 20 20 |ULL; j++|) {. |
|00002df0| 20 20 20 20 20 20 20 20 | 54 6f 74 61 6c 46 69 6c | |TotalFil|
|00002e00| 65 73 2b 2b 3b 0d 20 20 | 20 20 20 20 20 20 20 20 |es++;. | |
|00002e10| 20 20 4e 75 6d 46 69 6c | 65 73 2b 2b 3b 0d 20 20 | NumFil|es++;. |
|00002e20| 20 20 20 20 20 20 20 7d | 0d 0d 20 20 20 20 20 20 | }|.. |
|00002e30| 20 20 20 71 73 6f 72 74 | 28 28 76 6f 69 64 20 2a | qsort|((void *|
|00002e40| 29 20 76 61 6c 75 65 2c | 20 28 73 69 7a 65 5f 74 |) value,| (size_t|
|00002e50| 29 20 4e 75 6d 46 69 6c | 65 73 2c 20 73 69 7a 65 |) NumFil|es, size|
|00002e60| 6f 66 28 63 68 61 72 20 | 2a 29 2c 0d 20 20 20 20 |of(char |*),. |
|00002e70| 20 20 20 20 20 20 20 20 | 20 20 20 63 6f 6d 70 61 | | compa|
|00002e80| 72 29 3b 0d 20 20 20 20 | 20 20 20 20 20 2f 2a 20 |r);. | /* |
|00002e90| 61 70 70 65 6e 64 20 74 | 6f 20 6c 69 73 74 20 2a |append t|o list *|
|00002ea0| 2f 0d 20 20 20 20 20 20 | 20 20 20 69 66 20 28 68 |/. | if (h|
|00002eb0| 65 61 64 20 3d 3d 20 4e | 55 4c 4c 29 20 68 65 61 |ead == N|ULL) hea|
|00002ec0| 64 20 3d 74 6d 70 3b 0d | 20 20 20 20 20 20 20 20 |d =tmp;.| |
|00002ed0| 20 65 6c 73 65 20 7b 0d | 20 20 20 20 20 20 20 20 | else {.| |
|00002ee0| 20 20 20 20 63 75 72 20 | 3d 20 68 65 61 64 3b 0d | cur |= head;.|
|00002ef0| 20 20 20 20 20 20 20 20 | 20 20 20 20 77 68 69 6c | | whil|
|00002f00| 65 20 28 63 75 72 2d 3e | 6e 65 78 74 20 21 3d 20 |e (cur->|next != |
|00002f10| 4e 55 4c 4c 29 20 63 75 | 72 20 3d 20 63 75 72 2d |NULL) cu|r = cur-|
|00002f20| 3e 6e 65 78 74 3b 0d 20 | 20 20 20 20 20 20 20 20 |>next;. | |
|00002f30| 20 20 20 63 75 72 2d 3e | 6e 65 78 74 20 3d 20 74 | cur->|next = t|
|00002f40| 6d 70 3b 0d 20 20 20 20 | 20 20 20 20 20 7d 20 20 |mp;. | } |
|00002f50| 20 0d 20 20 20 20 20 20 | 7d 0d 20 20 20 20 20 20 | . |}. |
|00002f60| 0d 20 20 20 7d 20 2f 2a | 20 77 68 69 6c 65 20 2a |. } /*| while *|
|00002f70| 2f 0d 20 20 20 0d 20 20 | 20 72 65 74 76 61 6c 20 |/. . | retval |
|00002f80| 3d 20 28 63 68 61 72 20 | 2a 2a 29 20 6d 61 6c 6c |= (char |**) mall|
|00002f90| 6f 63 28 28 73 69 7a 65 | 5f 74 29 20 28 54 6f 74 |oc((size|_t) (Tot|
|00002fa0| 61 6c 46 69 6c 65 73 29 | 2a 73 69 7a 65 6f 66 28 |alFiles)|*sizeof(|
|00002fb0| 63 68 61 72 20 2a 29 29 | 3b 0d 20 20 20 63 75 72 |char *))|;. cur|
|00002fc0| 20 3d 20 68 65 61 64 3b | 0d 20 20 20 69 20 3d 20 | = head;|. i = |
|00002fd0| 30 3b 0d 20 20 20 77 68 | 69 6c 65 20 28 63 75 72 |0;. wh|ile (cur|
|00002fe0| 20 21 3d 20 4e 55 4c 4c | 29 20 7b 0d 20 20 20 20 | != NULL|) {. |
|00002ff0| 20 20 6a 20 3d 20 30 3b | 0d 20 20 20 20 20 20 77 | j = 0;|. w|
|00003000| 68 69 6c 65 20 28 63 75 | 72 2d 3e 61 72 67 76 5f |hile (cu|r->argv_|
|00003010| 62 6c 6f 63 6b 5b 6a 5d | 20 21 3d 20 4e 55 4c 4c |block[j]| != NULL|
|00003020| 29 20 7b 0d 20 20 20 20 | 20 20 20 20 20 72 65 74 |) {. | ret|
|00003030| 76 61 6c 5b 69 5d 20 3d | 20 63 75 72 2d 3e 61 72 |val[i] =| cur->ar|
|00003040| 67 76 5f 62 6c 6f 63 6b | 5b 6a 5d 3b 0d 20 20 20 |gv_block|[j];. |
|00003050| 20 20 20 20 20 20 69 2b | 2b 3b 0d 20 20 20 20 20 | i+|+;. |
|00003060| 20 20 20 20 6a 2b 2b 3b | 0d 20 20 20 20 20 20 7d | j++;|. }|
|00003070| 0d 20 20 20 20 20 20 74 | 6d 70 20 3d 20 63 75 72 |. t|mp = cur|
|00003080| 3b 0d 20 20 20 20 20 20 | 63 75 72 20 3d 20 63 75 |;. |cur = cu|
|00003090| 72 2d 3e 6e 65 78 74 3b | 0d 20 20 20 20 20 20 66 |r->next;|. f|
|000030a0| 72 65 65 28 74 6d 70 2d | 3e 61 72 67 76 5f 62 6c |ree(tmp-|>argv_bl|
|000030b0| 6f 63 6b 29 3b 0d 20 20 | 20 20 20 20 66 72 65 65 |ock);. | free|
|000030c0| 28 74 6d 70 29 3b 0d 20 | 20 20 7d 0d 20 20 20 0d |(tmp);. | }. .|
|000030d0| 20 20 20 2a 61 72 67 63 | 20 3d 20 54 6f 74 61 6c | *argc| = Total|
|000030e0| 46 69 6c 65 73 3b 0d 20 | 20 20 2a 61 72 67 76 20 |Files;. | *argv |
|000030f0| 3d 20 72 65 74 76 61 6c | 3b 0d 20 20 0d 7d 0d 0d |= retval|;. .}..|
|00003100| 23 69 66 64 65 66 20 47 | 54 45 53 54 0d 0d 23 69 |#ifdef G|TEST..#i|
|00003110| 6e 63 6c 75 64 65 20 3c | 63 6f 6e 73 6f 6c 65 2e |nclude <|console.|
|00003120| 68 3e 0d 0d 6d 61 69 6e | 20 28 61 72 67 63 2c 20 |h>..main| (argc, |
|00003130| 61 72 67 76 29 0d 20 20 | 20 20 20 69 6e 74 20 61 |argv). | int a|
|00003140| 72 67 63 3b 0d 20 20 20 | 20 20 63 68 61 72 20 2a |rgc;. | char *|
|00003150| 2a 61 72 67 76 3b 0d 7b | 0d 20 20 75 6e 73 69 67 |*argv;.{|. unsig|
|00003160| 6e 65 64 20 69 6e 74 20 | 6a 3b 0d 20 20 0d 20 20 |ned int |j;. . |
|00003170| 61 72 67 63 20 3d 20 63 | 63 6f 6d 6d 61 6e 64 28 |argc = c|command(|
|00003180| 26 61 72 67 76 29 3b 0d | 20 20 67 6c 6f 62 5f 61 |&argv);.| glob_a|
|00003190| 72 67 76 28 26 61 72 67 | 63 2c 20 26 61 72 67 76 |rgv(&arg|c, &argv|
|000031a0| 29 3b 0d 0d 20 20 66 6f | 72 20 28 6a 20 3d 20 30 |);.. fo|r (j = 0|
|000031b0| 3b 20 6a 20 3c 20 61 72 | 67 63 3b 20 6a 2b 2b 29 |; j < ar|gc; j++)|
|000031c0| 0d 09 20 20 20 20 20 20 | 20 20 70 72 69 6e 74 66 |.. | printf|
|000031d0| 20 28 22 25 73 5c 6e 22 | 2c 20 61 72 67 76 5b 6a | ("%s\n"|, argv[j|
|000031e0| 5d 29 3b 0d 20 20 65 78 | 69 74 20 28 30 29 3b 0d |]);. ex|it (0);.|
|000031f0| 7d 0d 0d 76 6f 69 64 20 | 2a 78 6d 61 6c 6c 6f 63 |}..void |*xmalloc|
|00003200| 28 6e 29 0d 20 20 20 20 | 20 73 69 7a 65 5f 74 20 |(n). | size_t |
|00003210| 6e 3b 0d 7b 0d 20 20 76 | 6f 69 64 20 2a 72 20 3d |n;.{. v|oid *r =|
|00003220| 20 6d 61 6c 6c 6f 63 28 | 6e 29 3b 0d 0d 20 20 72 | malloc(|n);.. r|
|00003230| 65 74 75 72 6e 20 72 3b | 0d 7d 0d 0d 23 65 6e 64 |eturn r;|.}..#end|
|00003240| 69 66 09 2f 2a 20 54 45 | 53 54 2e 20 20 2a 2f 0d |if./* TE|ST. */.|
|00003250| 0d 0d 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003270| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003280| 00 00 01 00 00 00 01 76 | 00 00 00 76 00 00 00 32 |.......v|...v...2|
|00003290| 00 0f e8 4f 70 06 d0 ae | 00 08 28 40 70 06 d0 ae |...Op...|..(@p...|
|000032a0| 00 0c 26 40 70 06 d0 ae | 00 10 24 40 60 08 30 1b |..&@p...|..$@`.0.|
|000032b0| 06 67 6c 6f 62 2e 63 67 | 02 00 00 00 54 45 58 54 |.glob.cg|....TEXT|
|000032c0| 50 45 44 54 40 00 00 00 | 00 00 00 00 00 00 44 a6 |PEDT@...|......D.|
|000032d0| 00 00 54 45 58 54 50 45 | 44 54 40 00 00 00 00 00 |..TEXTPE|DT@.....|
|000032e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000032f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 01 a8 60 02 |........|......`.|
|00003300| 30 c1 51 c8 ff fc 4e 5e | 4e 75 00 00 02 2e 00 00 |0.Q...N^|Nu......|
|00003310| 00 0a 00 00 01 32 42 78 | 0a 4a 9d ce 4e ba 00 24 |.....2Bx|.J..N..$|
|00003320| 42 67 48 79 00 00 ff ff | 48 6f 00 04 48 57 48 78 |BgHy....|Ho..HWHx|
|00003330| 00 01 22 3a ff de 4e b5 | 10 00 20 6d 00 6c 4e 90 |..":..N.|.. m.lN.|
|00003340| a9 f4 59 8f 2f 3c 5a 45 | 52 4f 42 67 a9 a0 24 57 |..Y./<ZE|ROBg..$W|
|00003350| 59 8f 2f 3c 44 41 54 41 | 42 67 a9 a0 20 57 20 50 |Y./<DATA|Bg.. W P|
|00003360| 22 78 09 08 24 52 60 0e | 32 d8 66 0a 32 1a 60 02 |"x..$R`.|2.f.2.`.|
|00003370| 42 19 51 c9 ff fc bb c9 | 66 ee a9 a3 a9 a3 59 8f |B.Q.....|f.....Y.|
|00003380| 00 00 00 72 00 04 00 1e | 00 00 1e 17 01 4d 00 22 |...r....|.....M."|
|00003390| db 22 10 20 0f 6e 61 6d | 65 5f 76 65 63 74 6f 72 |.". .nam|e_vector|
|000033a0| 5b 31 5d 20 00 18 00 00 | 1e 4d 01 51 00 22 db 12 |[1] ....|.M.Q."..|
|000033b0| 10 20 09 72 65 73 75 6c | 74 5b 31 5d 00 18 00 00 |. .resul|t[1]....|
|000033c0| 22 6d 01 7b 00 22 db 02 | 10 20 09 76 61 6c 75 65 |"m.{."..|. .value|
|000033d0| 5b 31 5d 20 00 22 00 00 | 23 5e 01 82 00 22 da f2 |[1] ."..|#^..."..|
|000033e0| 10 20 13 28 63 68 61 72 | 20 2a 29 54 6f 74 61 6c |. .(char| *)Total|
|000033f0| 46 69 6c 65 73 20 00 00 | 01 00 00 00 01 76 00 00 |Files ..|.....v..|
|00003400| 00 76 00 00 00 32 00 2b | f6 d6 05 e2 00 00 00 1c |.v...2.+|........|
|00003410| 00 32 00 00 44 54 56 55 | 00 00 00 0a 4b c1 ff ff |.2..DTVU|....K...|
|00003420| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003430| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003440| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003450| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003460| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003470| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+